CF1479B Painting the Array

CF1479B1 Painting the Array I
CF1479B1 Painting the Array II

题意:

本题与 CF1480D2 的唯一区别是本题询问最大可能解.

给定一个数组a,你将ai染为bi色,其中b是由你指定的一个01数组.将a数组中被染成0色的数字取出来并依在a中出现的顺序排列,组成数组a(0).同理,将a数组中被染成1色的数字取出来并依在a中出现的顺序排列,组成数组a(1).给定一个数组 a, 你将 a_i染为 b_i色, 其中 b 是由你指定的一个 01 数组. 将 a 数组中被染成 0 色的数字取出来并依在 a 中出现的顺序排列, 组成数组 a^{(0)}. 同理, 将 a 数组中被染成 1 色的数字取出来并依在 a 中出现的顺序排列, 组成数组 a^{(1)}.a,aibi,b01.a0a,a(0).,a1a,a(1).

我们定义seg(c)是一个正整数,其中c是一个数组,seg(c)的值为在我们将c中相邻的所有相同元素合并后,c数组的大小.例如,seg([1,1,4,5,1,4])=∣[1,4,5,1,4]∣=5.最大化seg(a(0))+seg(a(1))我们定义 seg(c) 是一个正整数, 其中 c 是一个数组, seg(c) 的值为在我们将 c 中相邻的所有相同元素合并后, c 数组的大小. 例如, seg([1, 1, 4, 5, 1, 4]) = |[1, 4, 5, 1, 4]|=5. 最大化 seg(a^{(0)})+seg(a^{(1)})seg(c),c,seg(c)c,c.,seg([1,1,4,5,1,4])=[1,4,5,1,4]=5.seg(a(0))+seg(a(1))

题解:

贪心策略,问题D1,如果我们想让值更大,就要尽可能避免相同数字相邻的情况,现在有两数组a0a^0a0a1a^1a1,那么我们可以这样把其当作栈,分配数组a时,尽可能让相同元素岔开

  1. 如果第一个栈顶==第二个栈顶,那ai随便放一边都行,
  2. 如果第一个栈顶!=第二个,且第一个栈顶=aia_{i}ai,那么就把ai放在另一个栈中
  3. 如果第一个栈顶!=第二个,且第二个栈顶=aia_{i}ai,那么就把ai放在另一个栈中
  4. 如果两个栈都不等于ai,且两个栈顶也不一样,貌似此时怎么放都行?但并不是因为我们所放的位置会影响后面的决定,因为放完就成为新的栈顶了。此时我们引入nxt数组,nxt[x]表示下一个axa_{x}ax的位置。我们比较两个栈顶的nxt,越小说明相同元素再出现越接近,就更需要我们用不同的元素去隔开

D2问题就是反过来统计答案

代码:

D1

#include <bits/stdc++.h>
#include <unordered_map>
#define debug(a, b) printf("%s = %d\n", a, b);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll= 1e18;
const int INF_int= 0x3f3f3f3f;
void read(){};
template <typename _Tp, typename... _Tps> void read(_Tp& x, _Tps&... Ar)
{x= 0;char c= getchar();bool flag= 0;while (c < '0' || c > '9')flag|= (c == '-'), c= getchar();while (c >= '0' && c <= '9')x= (x << 3) + (x << 1) + (c ^ 48), c= getchar();if (flag)x= -x;read(Ar...);
}
template <typename T> inline void write(T x)
{if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
void rd_test()
{
#ifdef ONLINE_JUDGE
#elsestartTime = clock ();freopen("data.in", "r", stdin);
#endif
}
void Time_test()
{
#ifdef ONLINE_JUDGE
#elseendTime= clock();printf("\nRun Time:%lfs\n", (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
const int maxn=2e5+9;
int a[maxn];
int nxt[maxn];
int id[maxn];
vector<PII>x,y;
int main()
{//rd_test();int n;read(n);for(int i=1;i<=n;i++){read(a[i]);id[i]=n+1;}for(int i=n;i>=1;i--){nxt[i]=id[a[i]];id[a[i]]=i;}x.push_back({0,n+1});y.push_back({0,n+1});int ans=0;for(int i=1;i<=n;i++){if(a[i]==x.back().first&&a[i]==y.back().first){x.push_back({a[i],nxt[i]});}else if(a[i]==x.back().first){y.push_back({a[i],nxt[i]});ans++;}else if(a[i]==y.back().first){x.push_back({a[i],nxt[i]});ans++;}else {ans++;if(x.back().second>y.back().second){y.push_back({a[i],nxt[i]});}else x.push_back({a[i],nxt[i]});}}cout<<ans<<endl;//Time_test();
}

D2

#include <bits/stdc++.h>
#include <unordered_map>
#define debug(a, b) printf("%s = %d\n", a, b);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll= 1e18;
const int INF_int= 0x3f3f3f3f;
void read(){};
template <typename _Tp, typename... _Tps> void read(_Tp& x, _Tps&... Ar)
{x= 0;char c= getchar();bool flag= 0;while (c < '0' || c > '9')flag|= (c == '-'), c= getchar();while (c >= '0' && c <= '9')x= (x << 3) + (x << 1) + (c ^ 48), c= getchar();if (flag)x= -x;read(Ar...);
}
template <typename T> inline void write(T x)
{if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
void rd_test()
{
#ifdef ONLINE_JUDGE
#elsestartTime = clock ();freopen("data.in", "r", stdin);
#endif
}
void Time_test()
{
#ifdef ONLINE_JUDGE
#elseendTime= clock();printf("\nRun Time:%lfs\n", (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
const int maxn=2e5+9;
int a[maxn];
int nxt[maxn];
int id[maxn];
vector<PII>x,y;
int main()
{//rd_test();int n;read(n);for(int i=1;i<=n;i++){read(a[i]);id[i]=n+1;}for(int i=n;i>=1;i--){nxt[i]=id[a[i]];id[a[i]]=i;}x.push_back({0,n+1});y.push_back({0,n+1});int ans=0;for(int i=1;i<=n;i++){if(a[i]==x.back().first&&a[i]==y.back().first){x.push_back({a[i],nxt[i]});}else if(a[i]==x.back().first){x.push_back({a[i],nxt[i]});}else if(a[i]==y.back().first){y.push_back({a[i],nxt[i]});}else {ans++;if(x.back().second>y.back().second){x.push_back({a[i],nxt[i]});}else y.push_back({a[i],nxt[i]});}}cout<<ans<<endl;//Time_test();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 ASP.NET Core 中安装 MVC

目录本文出自《从零开始学 ASP.NET CORE MVC》目录 视频课程效果更佳&#xff1a;从零开始学 Asp.Net Core MVC 在ASP.NET Core 中安装 MVC在本视频中&#xff0c;我们将讨论在 ASP.NET Core 应用程序中设置 MVC。到目前为止&#xff0c;我们在本系列视频中使用的 ASP.NET Core…

CF1479C Continuous City

CF1479C Continuous City 题意&#xff1a; 给定 L, R. 构造一个有向带权图, 其中点数不大于 32, 且所有边都是从较小的点指向较大的点. 假设这个有向图有 n 个点, 你需要保证从 1到n 的所有路径的权值都在 [L, R]内且不存在 x∈[L,R], 使得不存在或存在多于一条从 1 到 n 的…

Office转PDF,Aspose太贵,怎么办?

在程序开发中经常需要将Office文件转换成PDF&#xff0c;著名的Aspose的三大组件可以很容易完成这个功能&#xff0c;但是Aspose的每个组件都单独收费&#xff0c;而且每个都卖的不便宜。在老大的提示下&#xff0c;换了一种思路来解决这个问题。环境dotNetCore:2.1CentOS:7.5D…

Codeforces Round #541 (Div. 2)

Codeforces Round #541 (Div. 2) 题号题目知识点ASea Battle思维BDraw!贪心模拟CBirthday思维DGourmet choiceEString MultiplicationFAsya And KittensGMost Dangerous Shark

收起.NET程序的dll来

作为上床后需要下床检查好几次门关了没有的资深强迫症患者&#xff0c;有一个及其搞我的问题&#xff0c;就是dll问题。曾几何时&#xff0c;在没有nuget的年代&#xff0c;当有依赖项需要引用的时候&#xff0c;只能通过文件引用来管理引用问题&#xff0c;版本问题&#xff0…

CF1479D Odd Mineral Resource

CF1479D Odd Mineral Resource 题意&#xff1a; 给定一棵树&#xff0c;每个点有颜色 cic_ici​&#xff0c;多次查询&#xff0c;每次给定 u,v,l,r&#xff0c;你需要给出一个颜色 x&#xff0c;使得 x 满足&#xff1a; x∈[l,r]x\in [l,r]x∈[l,r] x在u到v的路径上出现了…

从壹开始 [ Ids4实战 ] 之三║ 详解授权持久化 用户数据迁移

哈喽大家周三好&#xff0c;今天终于又重新开启 IdentityServer4 的落地教程了&#xff0c;不多说&#xff0c;既然开始了&#xff0c;就要努力做好?。书接上文&#xff0c;在很久之前的上篇文章《二║ 基础知识集合 & 项目搭建一》中&#xff0c;我们简单的说了说 Identi…

Codeforces Round #516 (Div. 2Div.1)

Codeforces Round #516 (Div. 2&&Div.1) (Div.1) 题号题目知识点AMake a triangle!贪心题BEquations of Mathematical Magic推公式COh Those Palindromes推导题(猜结论)DLabyrinthbfs剪枝EDwarves, Hats and Extrasensory Abilities思维构造FCandies for ChildrenGLas…

微软XAML Studio - WPF, UWP, Xamarin等技术开发者的福音

最近在继续倒腾WPF的项目&#xff0c;继续使用Caliburn.Micro和Xceed来堆代码。每次调试xaml上的binding&#xff0c;都有种要疯的赶脚。今天路过 https://channel9.msdn.com/ 浏览 WPF相关的学习视频时&#xff0c;遇到微软推荐的相关视频 - XAML sutdio简介https://channel9.…

CF1063A Oh Those Palindromes

CF1063A Oh Those Palindromes 题意&#xff1a; 一个非空字符串叫做回文串。如果它从左到右&#xff0c;从右到左读相同&#xff0c;那么它就是回文串。 例如&#xff0c;“ABCBA”,“A”和“ABBA”都是回文串&#xff0c;而“ABAB”和“XY”则不是。 如果可以通过从字符串…

AddMvc 和 AddMvcCore 的区别

目录本文出自《从零开始学 ASP.NET CORE MVC》目录 视频课程效果更佳&#xff1a;从零开始学 Asp.Net Core MVC ASP.NET Core 为什么有 AddMvc 和 AddMvcCore 他们是什么关系&#xff1f;在本视频中&#xff0c;我们将讨论 AddMvc()和 AddMvcCore()方法之间的区别。要在 ASP.NE…

CF1063B Labyrinth

CF1063B Labyrinth 题意&#xff1a; 你正在玩一款电脑游戏。在其中一关&#xff0c;你位于一个 n 行 m 列的迷宫。每个格子要么是可以通过的空地&#xff0c;要么是障碍。迷宫的起点位于第 r 行第 c 列。你每一步可以向上、下、左、右中的一个方向移动一格&#xff0c;前提是…

浅谈容量规划

俗话说&#xff0c;”人无远虑&#xff0c;必有近忧”&#xff0c;容量规划就是”远虑”。所谓容量规划&#xff0c;是一个产品满足用户目标需求而决定生产能力的过程。当产品发展到一个较为稳定成熟的阶段&#xff0c;产品的整体处理能力的把控自然是不可或缺&#xff0c;尽管…

CF1063C Dwarves, Hats and Extrasensory Abilities

CF1063C Dwarves, Hats and Extrasensory Abilities 题意&#xff1a; 首先题目会给出 n &#xff0c;表示要输入多少点。 然后你输出n 个点的坐标&#xff0c;每输出一个点会告诉你这个点的颜色是黑色或者白色。 最后你需要输出两个点的坐标代表一条直线&#xff0c;这条直线…

Blazor——Asp.net core的新前端框架

Blazor是微软在Asp.net core 3.0中推出的一个前端MVVM模型&#xff0c;它可以利用Razor页面引擎和C#作为脚本语言来构建WEB页面&#xff0c;如下代码简单演示了它的基本功能&#xff1a;和Angular JS和VUE的模型非常类似&#xff0c;Blazor 支持大多数应用所需的核心方案&#…

CF1149B Three Religions

CF1149B Three Religions 题意&#xff1a; 给定长度为 n 的母串和三个子串s1,s2,s3s_1,s_2,s_3s1​,s2​,s3​ 。初始时子串均为空。有 q 次询问。你需要支持两种操作&#xff1a;向某个子串末尾添加一个字母&#xff0c;或者删去某个子串末尾的字母。在每次操作后&#xff…

【译文】领域模型的五个特征

我在这篇博客文章中&#xff0c;我试图给领域模型下一个非常合适的定义&#xff0c;我发现我的这些定义都不太妥当&#xff0c;不过&#xff0c;我们还是可以先来看一下wiki百科对领域驱动模型下的定义&#xff1a;问题解决和软件工程中的领域模型可以被认为是感兴趣的领域&…

Codeforces Round #556 (Div. 1Div. 2)

Codeforces Round #556 (Div. 1&&Div. 2) 题号题目知识点AStock Arbitraging贪心BTiling Challenge贪心CPrefix Sum Primes构造DThree Religions线性dpETree Generator™FAbandoning RoadsGElection Promises

使用ASP.NET Core 实现Docker的HealthCheck指令

写在前面HealthCheck 不仅是对应用程序内运行情况、数据流通情况进行检查&#xff0c; 还包括应用程序对外部服务或依赖资源的健康检查。健康检查通常是以暴露应用程序的HTTP端点的形式 实施&#xff0c;可用于配置健康探测的的场景有 &#xff1a;容器或负载均衡器 探测应用状…

VS Code 中有哪些好用的 Azure 插件?

在之前的文章中&#xff0c;我们提到了 Amazon、Google、IBM、Red Hat、Salesforce、Pivotal 等大厂都在 VS Code 中有提供相应的开发工具&#xff1a;亚马逊上了 VS Code 的船&#xff0c;还有哪些大厂也上了船&#xff1f;微软必定更是把 VS Code 作为其最重要的开发者平台了…