CF随机做题

CF1000C

难度 1700

开始以为是线段树,但是发现好像直接离线做就好了。。。

CF1176D

难度 1800

思维题,考虑从大到小贪心。
若当前数为质数,那么它一定不在原数组中,那么找到 primex==bix 并放入原数组,删除两数。
若为合数,那么它一定在原数组中,找到它因子中最大的那个,删除两数。

CF295B

难度 1700

发现正着做,无论如何都是 O(n4),于是考虑倒着做,转化为每次加一个点,此时可以 Floyd 直接来,因为 Floyd 对松弛操作的顺序没有要求,所以复杂度 O(n3)

CF1388C

难度 1800

细节题,考虑 YES 需要满足的条件:
1.经过当前点的人数 |hu|,显然。
2.经过当前点的人数 hu 能被 2 整除,考虑设 经过当前点的人数为 x,可得当前点心情好的有 12(x+hi) 个,不好的有 12(xhi) 个。
3.当前点心情不好的人数 其子树中所有点心情不好的人数之和,因为心情不好的人不会变好,所以心情不好的人数只增不减。

CF1354D

难度 1900

本来想拿 pbdstree 写,发现卡空间。于是想到值域分块做,但是看数据范围 1e6 ,感觉很卡,应该过不了(后来看题解区好像有人写了,能过),只能改用二分+树状数组,时间复杂度 O(nlog2n)

CF1400E

难度 2200

本来想写 dp,但是奈何太菜了,写萎了。于是考虑分治。
f(l,r) 表示把 l r 推平的最少次数,若全用操作 2,则需 rl+1 次,若用操作 1,则考虑一直用操作 1,直至有一位变成 0,然后贡献是 f(l,p1)+f(p+1,r)+ap。 时间复杂度 O(n2)

CF743D

难度 1800

考虑树形 dp,设 fu 表示以 u 为根的子树的最大子树和,转移显然为 fu=maxmaxfv,sumu,而答案则是取每个 u 的儿子 v 中,最大的和次大的 fv 之和的最大值。若只有一个儿子,则不更新答案。

CF626D

难度 1800

概率题,考虑 dp,假设第一个人取的数是 a1,a2,a3,第二个人是 b1,b2,b3,求 (a1b1)+(a2b2)<a3b3[a1>b1,a2>b2] 的概率。设 f0,i 表示 axay==i 的概率, f1,i 表示 (ax1ay1)+(ax2ay2)==i 的概率,直接做就行了。

CF1690G

难度 2000

萌萌 ds 题,相当于是单点减 + 区间推平,考虑直接珂朵莉做。推平就暴力往后枚举,能并就并,经过我们的若干次操作,最多会有 n+m 个区间,所以复杂度 O((n+m)logn)

CF1702G2

难度 2000

LCA 好题,要求判断是否存在一条链包含树上给定点集。考虑这样一个性质:若存在满足条件的最短链,则点集中深度最深的点 u 是该链的一个端点,点集中距离 u 最远的点 v 是该链的另一端点。
所以,直接求出头尾两点的 LCA,对于其他点,若其 depu<depLCA 则不满足,否则若其不在 1st||1ed 的路径上,则也不满足。每个点可以用 LCA 判。

CF730B

难度 1800

如图先每相邻两个一组,询问 n2 次,再组与组之间比较,每两组比较两次,找最大最小预计 n1 次,刚好满足题目要求次数。

CF1012C

难度 1900

dp,考虑设:
fi,j,0 表示 前 i 个数中,有 j 个峰,第 i,i-1 都不为峰的方案数。
fi,j,1 表示 前 i 个数中,有 j 个峰,第 i 为峰的方案数。
fi,j,2 表示 前 i 个数中,有 j 个峰,第 i-1 为峰的方案数。
考虑转移:
fi,j,0=min(fi1,j,0,fi1,j,2);
fi,j,1=min(fi1,j1,0+max(0,ai1ai+1),fi1,j1,2+max(0,min(ai1,ai21)ai+1));
fi,j,2=fi1,j,1+max(0,aiai1+1);
第一维可以直接滚掉,同时注意要倒序枚举 j,从转移可见,先更新顺序为 fi,j,0,fi,j,2,fi,j,1。时间复杂度 O(n2)

CF1174D

难度 1900

先考虑构造,序列中相邻两个元素异或和不为 0 或 x,这个可以记 vis 直接做,然后考虑怎么把相邻扩展到任意,直接异或前缀和即可。

CF1537D

难度 1700

找规律题,可以手玩或者打暴力,发现奇数都是 Bob 赢,偶数则是当其为 22k+1 时是 Bob 赢,否则是 Alice 赢。

CF161D

难度 1800

范围比较小,可以直接 O(nk) 树形 dp,设 fu,d 表示与 u 距离为 d 的点数,直接暴力转移就行。

CF1144F

难度 1700

你谷恶评,这题居然有紫。。。,要使图中没有距离 2 的路径,那么就是相邻两点不能同时为入或者同时为出,那么发现直接黑白染色即可。

CF1144G

难度 2400

fi,0 表示把序列的前 i 个数拆成一个递增序列和一个递减序列(可以为空),并且 Ai 属于递增序列时,递减序列结尾可能的最大值。fi,1,表示 Ai 属于递减序列时,递增序列结尾可能的最小值。

转移有四种:

  • Ai1,Ai 都属于递增序列,条件是 Ai1<Ai,转移为 fi1,0fi,0

  • Ai1,Ai 都属于递减序列,情况类似。

  • Ai1 属于递减序列,Ai 属于递增序列,条件是 fi1,1<Ai,转移为 Ai1fi,0

  • Ai1 属于递增序列,Ai 属于递减序列,情况类似。

为了输出方案,记 lsti,0 表示在最优方案中 Ai1 属于哪个序列,lsti,1 同理。

CF1335E2

难度 1800

模拟题。首先我们记录某一个数 ai 到 i 出现的次数以及出现到这个次数的位置。前缀后缀个各做一遍。然后我们枚举第一个颜色 x 以及它第一段的长度l。然后得出 p1,p2 分别表示前缀 x 颜色到达 l 个的位置,以及后缀到达 l 个的位置。

然后在枚举第二种颜色 y,那么 ans=max(ans,l×2+max(p2p1)) 为到 [p1,p2] 这段区间里面出现次数最多的颜色数量。

CF1477B

难度 1900

我们模拟一下样例的过程,发现正着不好做,考虑反过来,即将 T 改为 F。

对于 一段区间 [li,ri]

  • 如果 01 数量相同,不能改变字符串。

  • 如果 1 的数量超过一半,就只能把所有 0 改为 1。

  • 如果 1 的数量没超过一半,就只把所有 1 改为 0。

只需一个数据结构维护区间覆盖 + 区间求和,直接上线段树或分块即可。

CF527D

难度 1800

xixj,原式可以写为 xiwixj+wj,对于一个点 i,我们再给它加上两个属性:l 和 r。其中 li=xiwiri=xi+wi,然后再看看刚才推出来的式子,就变成了 lirj,接着就是贪心线段覆盖。

posted @   RC·阿柒  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示