jjzjj

Codeforces

全部标签

Codeforces Round 865 (Div. 2) A-E

CodeforcesRound865(Div.2)A.IanVisitsMaryvoidsolve(){intx=read(),y=read();if(__gcd(y,x)!=1){cout2endl;cout1""1endl;cout""endl;}else{cout1"\n";cout"""\n";}//puts(ans>0?"YES":"NO");//puts(ans>0?"Yes":"No");} B.GridReconstruction自己写了挺长一串的这是赛后学习jiangly的代码voidsolve(){intn=read();for(inti=0;i2;i++){for(int

Codeforces Round 865 (Div. 2) A-E

CodeforcesRound865(Div.2)A.IanVisitsMaryvoidsolve(){intx=read(),y=read();if(__gcd(y,x)!=1){cout2endl;cout1""1endl;cout""endl;}else{cout1"\n";cout"""\n";}//puts(ans>0?"YES":"NO");//puts(ans>0?"Yes":"No");} B.GridReconstruction自己写了挺长一串的这是赛后学习jiangly的代码voidsolve(){intn=read();for(inti=0;i2;i++){for(int

Codeforces #821 Div2(A~D2)题解

CF#821Div2AConsecutiveSum题目:​ 选择\(i\)和\(j\),如果\(j=i+xk(x=R)\),可以交换\(i,j\)。任意选择一段长度为k的相加。思路:​ 题目等价于在下标\(mod\)k相同的数中选一个最大的。简单模拟。可以用vis标记或者优先队列。实现:​ 不值一提。voidsolve(){cin>>n>>k;priority_queueq[105];for(inti=0;i>x;q[(i+1)%k].push(x);}llres=0;for(inti=0;iBRuleofLeague(分类讨论)题目:​ 有n个人,他们之间会进行n-1场比赛。将人分成两部分

Codeforces #821 Div2(A~D2)题解

CF#821Div2AConsecutiveSum题目:​ 选择\(i\)和\(j\),如果\(j=i+xk(x=R)\),可以交换\(i,j\)。任意选择一段长度为k的相加。思路:​ 题目等价于在下标\(mod\)k相同的数中选一个最大的。简单模拟。可以用vis标记或者优先队列。实现:​ 不值一提。voidsolve(){cin>>n>>k;priority_queueq[105];for(inti=0;i>x;q[(i+1)%k].push(x);}llres=0;for(inti=0;iBRuleofLeague(分类讨论)题目:​ 有n个人,他们之间会进行n-1场比赛。将人分成两部分

Codeforces 1684 E. MEX vs DIFF

题意给你n个非负整数的数列a,你可以进行K次操作,每次操作可以将任意位置的数数更改成任意一个非负整数,求操作以后,DIFF(a)-MEX(a)的最小值;DIFF代表数组中数的种类。MEX代表数组中未出现的最小自然数。提示1.显然DIFF(a)-MEX(a)最小,DIFF(a)越小越好,MEX(a)越大越好2.假如DIFF降低,同时MEX提升,这样操作是不亏的,因此我们只需要提升MEX即可,贪心的的构造0-x,x为k次修改,能构建到mex的最大的数列a状态。3.在原始a中,0-x中空缺的值即为需要填充个数的值,我们只需要贪心,先填入出现次数少的>x的值,以降低它的DIFF,即MEX固定了,再降低

Codeforces1695 D1.+D2 Tree Queries

题意给一个n个点的无向图,其中有一个隐藏点X,可以进行一组询问S来确定S是n个节点中的哪个点。S包括k个询问节点。询问返回的值也为k个值,每个值为X点到每个询问节点的最短路距离,求k最小为多少。提示1.对于k个节点来说,最优的结构肯定是选择所有的叶子节点2.对于一个节点来说,假如它连了m条链(包括单个叶子节点),可以只标记m-1条链的叶子节点即可3.满足1,2条件以后,可以尝试再去询问点,发现均无法全部检测到,原因是:假如去点m-2条链,剩下的两条链,相同深度部分对于其他的节点来说是无法判断的,他们是等价的方法可以树形DP,一下,或者从每个叶子节点开始搜索一下,这里主要将树形DP的方法:dp[

Codeforces 1684 E. MEX vs DIFF

题意给你n个非负整数的数列a,你可以进行K次操作,每次操作可以将任意位置的数数更改成任意一个非负整数,求操作以后,DIFF(a)-MEX(a)的最小值;DIFF代表数组中数的种类。MEX代表数组中未出现的最小自然数。提示1.显然DIFF(a)-MEX(a)最小,DIFF(a)越小越好,MEX(a)越大越好2.假如DIFF降低,同时MEX提升,这样操作是不亏的,因此我们只需要提升MEX即可,贪心的的构造0-x,x为k次修改,能构建到mex的最大的数列a状态。3.在原始a中,0-x中空缺的值即为需要填充个数的值,我们只需要贪心,先填入出现次数少的>x的值,以降低它的DIFF,即MEX固定了,再降低

Codeforces1695 D1.+D2 Tree Queries

题意给一个n个点的无向图,其中有一个隐藏点X,可以进行一组询问S来确定S是n个节点中的哪个点。S包括k个询问节点。询问返回的值也为k个值,每个值为X点到每个询问节点的最短路距离,求k最小为多少。提示1.对于k个节点来说,最优的结构肯定是选择所有的叶子节点2.对于一个节点来说,假如它连了m条链(包括单个叶子节点),可以只标记m-1条链的叶子节点即可3.满足1,2条件以后,可以尝试再去询问点,发现均无法全部检测到,原因是:假如去点m-2条链,剩下的两条链,相同深度部分对于其他的节点来说是无法判断的,他们是等价的方法可以树形DP,一下,或者从每个叶子节点开始搜索一下,这里主要将树形DP的方法:dp[

Codeforces 1672 E. notepad.exe

题意这是一道交互题,有n个字符串,每个字符串长度:0-2000,n:0-2000有一个机器对他进行排版,你可以给他一个每行的最大宽度w,那么每行只能放长度为w的字符;每行相邻两个字符串之间至少有一个空格,每行结尾可以不用,机器会按照贪心原则进行排版,保证排版后的高度尽量小。你可以进行n+30次询问,每次询问你可以给个w,他会给你排版后高度h,让你求出w*h的最小值。做题吐槽这题很典型的构造题,不会就是不会,会了一下子就会做了,这种题感觉就是要一下子找到题目的突破点,挖掘出这类题目的特征,感觉自己还是菜,每个突破点想到了,但是没串连起来,继续加油!提示1.答案的范围变化是很小的,变化范围只有0-

Codeforces 1672 F1. Array Shuffling

题意给一个n个数的数列a,a[i]定义一个操作:每次可以交换任意位置的两个值;定义最优操作:对于任意一个原数列的一组排列,使其通过尽可能少的操作变回原数列;求构造一组原数列的一组排列,使得在最优操作下操作次数尽可能多;一开始读错题了,读成只能交换相邻点,一直在考虑逆序对,终于写出来了以后,一直wa,才发现原来是任意点交换,哭提示1.考虑每个点的值没有重复的话,那么很简单,直接构建一个环就好了,操作次数N-12.考虑到有两个相同数值的在一个环里的话,那么就可以分裂成两个环,这样最优解的个数就能减一3.因此只需要每次构建一个环,把所有数值的点每次囊括进去一个,直到没有环就好了代码#includeu