随笔分类 - OJ----CodeForces
摘要:xg 题意 f1为x,f2为y,fi=fi-1 + fi+1,求fn为多少(n=2e9) 思路 这题不用矩阵快速幂也可。 换算式子为fi = fi-1 - fi-2。 则易看出令f1 = {x,y},矩阵A为{{0,-1},{1,1}}; 答案即为f1 * An-1,因为存在负数,负数取模为(a%m
阅读全文
摘要:xg 题意 给相同长度为n的两个数组a,b。其中包括1-n和n个0。 一次操作:可以把a中任意一个数放到b的最右面,然后把b的最前面一个数放到a中。 问最少多少次操作可以使得b数组为1,2,3.....n。 思路 很明显a数组不影响结果,只需要分析b数组即可。且最多只需要2*n次操作。 如果1-n都
阅读全文
摘要:题意 给一颗无根树,其节点被染成黑白两色。对于其任意一个节点 vv,我们要求出某一个包含 vv 的联通块,使得联通块内白色节点 – 黑色节点数量最大。 思路 先用一个简单的树形dp自下而上的求出对于根rt,其最大差值为mx[rt]。 状态转移方程为:mx【x】 = Σy为x的子节点 max(mx【y
阅读全文
摘要:状态压缩好猛啊 题意 给了n个数组,每个输出的长度为m(n<3e5,m<8)。让你选择两个数组a,b。定义数组c,ci=max(ai,bi)。 让c数组的最小值最大。输出两个数组a,b的下标即可。 思路 很明显二分答案1e9。然后问题演变成对于答案x,这n个数组满不满足存在两个数组产生的c数组在每一
阅读全文
摘要:没看出来答案可能的取值区间为一个固定区间。。。大佬还是nb 题意 给两个整数n,k。从n个数挑选k个数,不改变顺序,组成一个新的数组s。 使得偶数(新数组)位置的最大值和奇数位置的最大值的较小值的数最小。 思路 如果对于任意i,ai是答案的话,则满足一个偶数位置(或奇数位置)全小于ai的序列长度大于
阅读全文
摘要:板子少抄了个+。。 题意 两个字符串a,b(dis)。进行merge(a,b)操作。 merge(a,b)操作为:比较a,b的第一个字符串的大小,把小的那个数存在数组p中,然后删除这个数,继续进行这个操作,直到任意一个数组为空。 给你长度为2*n的数组p,问存不存在两个字符串满足,两个字符串的长度相
阅读全文
摘要:xg了半天才发现规律 题意 给两个长度为n的字符串a,b。最多不操作2n次。使得a等于b。 操作为:选择任意一个下标pos,置换pos的前缀字符串,然后让1等于0,0等于1。 思路 比如10011001111。可以从左往右找到a【i】!=a【i+1】的位置,然后进行操作。使得字符串a变为全为1或者全
阅读全文
摘要:xg 题意 有m种花,每种花数量无限。每个花有两个幸福值a,b,一种花的第一朵花是a,其余全是b。问买n朵花,最高幸福值是多少。 思路 对于每种花。第i种花,n朵花全买这种,然后二分查找a,找到比bi大的a,然后计算数量cnt(cnt的大小需要仔细斟酌)。n中买i的cnt个不买i了,改买比bi大的a
阅读全文
摘要:xg 题意 给了n个数。可以对数组进行操作使得数组a变成数组b。 A:花费x,删除连续k个数(严格k个) B:花费y,选择两个相邻的,删除值小的。 问最少花费多少,使得a成为b。 思路 很明显,b必须是a的子序列。 将各个区间拆分出来。对于每个区间 一、如果该区间数量少于len: 1、如果该区间存在
阅读全文
摘要:拓扑玩少了想不到 题意 给了n个点,m个边,其中有些边是有向边,有些是无向边。要求你给无向边规定方向,使得该图无换环。如果不能则输出-1。否则输出这m个边的顶点u,v,要求u指向v。 思路 用拓扑排序判断环。如果出现的点的次数不等于n,则是无解。 学大佬个小技巧:给每个点定义一个nub记录出现的前后
阅读全文
摘要:xg 题意 给你n个数,和H,第pos次,sumpos大于H(sum为前缀和)。求最小的pos,pos属于1到+无穷。输出最小的pos,无解输出-1。 思路 对于1-n。如果sum>=H,则直接输出。 对于大于n。如果sum.n小于H,则无解。 否则,则答案一定为 i+k*n(i为【1,n】,k为【
阅读全文
摘要:题意:给了n个数,求任意一对数的lcm组成的数组的gcd。 思路:对每个数质因子分解,把每个数出现的次数存入数组中。 把每个质因子出现的次数从小进行排序。 对于质因子p。 如果p出现了n次,则选择第二小的幂次k,贡献即为pk 如果p出现了n-1次,则选择第一小的幂次k,贡献即为pk 出现小于n-1次
阅读全文
摘要:想不到二分的解法 大佬尺区的思维真清晰,而且模拟的不复杂。。。 题意:给了n个月,每月有di天,选取连续的x天,在这x天产生的幸福度sum为这一天是这个月的第几天的和。让sum最大。 思路:很明显从每个月的最后一天开始选择,然后往前选x天,尺区搞搞。 我最先是想从1-n模拟尺区的,发现太多的细节模拟
阅读全文
摘要:题意:给了m个士兵,每个士兵有个敏捷值。还有k个陷阱,每个陷阱有三个属性,l,r,d。分别为陷阱的位置,接触陷阱的位置,陷阱的难度(如果第i个陷阱未解除,敏捷值小于di的士兵走上去,会死亡)。只有你可以走过任意陷阱,当你走到ri位置,i陷阱解除。士兵只有和你处于同一位置的时候才可以移动,你一次可以移
阅读全文
摘要:没咋接触过交互题 题意:给了6个数分别是4,8,15,16,23,42。会由coder询问四次,询问的方式为“? a b”。 每次询问会由oj返回1个数,这个数为a,b的积。然后让你求出这六个数的顺序。 询问为cout 得到oj返回的数为cin #include <iostream> #includ
阅读全文
摘要:碎点 题意:给三个数组,让你从每个数组中各挑一个数满足两两之差的平方和最小。 思路:若想满足两两之和的平方差最小,则满足确定一个数t,其余两个数各是其数组中大于等于t和小于等于t的数。 用lower和--upper即可 #include <iostream> #include <cmath> #in
阅读全文
摘要:题意:给了4个数0,1,2,3。的数量a,b,c,d。要组成一个排列abs(ai+1-ai)等于1。组成不了则输出no,否则输出任意排列顺序。 思路:ifelse暴力肯定是能做的。最先是想查询从出现最多次数的数字贪心,如果前面一个数的数量不等于0,则游动下标pos--,否则pos++;后来发现这样有
阅读全文
摘要:题意:给了一个无向图和a,b两点。问存在多少对x,y,使得x到y的路上必须经过a,b。x,y和y,x算作一种情况。 思路:很明显就能想到。如果存在环,环中的点包括了a或者b,则答案为0,否则答案为a和b两边的点的数量积。 最初的想法太复杂,看到了一个特别简单的写法能之间秒。 可以先对a点进行标记,然
阅读全文
摘要:题意:给n个01字符串,让你进行k下操作,使得t字符串翻转,使得n个字符串存在一个顺序,使得ai+1的首字母和ai相等。使得k最小,输出这k个数。(注意变化前和变化后的字符串不重复) 思路:只有四种字符串,记录下每种字符串的数量。如果11,00,都不为0,且10,01为0,则无解。 考虑sum1和s
阅读全文
摘要:太久没写bfs,写法想错了算错了复杂度 题意:x坐标上,给了n个圣诞树的坐标,让你再求出m个人点,使得这m个人的点到最近的圣诞树的和最小,这n+m个点distinct。 思路:之间裸bfs。因为x1e9,可以用map<int,int> vis;//用map记录是否访问过。 #include <ios
阅读全文

浙公网安备 33010602011771号