随笔分类 -  cf

摘要:B 首先注意到一个连通块最多操作两次,如果大小为1,那么只需要操作一次,那么对于每个颜色,操作次数就是所有连通块中是否有大小\(\ge2\)的,如果有那么就是2,否则是1,枚举最后使用哪个颜色即可 C 注意到值域只有{1,2,3},并且长度至少为3,那么一定是形如1,2,2,....2,3这样的形式 阅读全文
posted @ 2025-03-01 16:51 gan_coder 阅读(28) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1898 C题可以造一个大小为4的环,然后再造一个来回,这样就解决了%4=0,%4=2的情况,而奇数的情况显然无解。 #include<cstdio> #include<algorithm> #include<cstring> #incl 阅读全文
posted @ 2023-11-29 20:38 gan_coder 阅读(23) 评论(0) 推荐(0)
摘要:B题 假设我们考虑能不能获得1,注意到b-c的奇偶性不会改变,然后特判一下只有一个大于0就行。 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<map> #include<vector> 阅读全文
posted @ 2023-11-28 22:18 gan_coder 阅读(16) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1455 很久没有vp了,感觉思维又僵化了 A题直接看样例,直接猜是长度。 B题首先如果是 \(x=\frac{n(n+1)}{2}\),那么就是n 否则如果\(x=\frac{n(n+1)}{2}+y\),分成两类 y=n,ans=n+ 阅读全文
posted @ 2023-11-21 16:46 gan_coder 阅读(11) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1864/problem/D 结论很好猜,直接从上到下做就行 我们可以维护差分数组,表示对下面的影响,逐行往下推就行,当然+和-要分开,因为一个是往前推,一个往后推。 时间复杂度\(O(n^2)\) #include<cstdio> #i 阅读全文
posted @ 2023-11-18 19:05 gan_coder 阅读(25) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1864/problem/C 思维越来越僵化了 假如\(n=2^k\),直接每次/2就行。 否则,我们可以考虑如何转化成上面的情况 令\(n=2^k x\),那么我们显然可以转移到\(n=2^k (x-1)\),因为x是奇数,所以2的次幂 阅读全文
posted @ 2023-11-17 23:19 gan_coder 阅读(35) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1853 C题感觉很不好写的样子,首先通过打表发现最后答案每次都是+n,那么我们考虑前i个,假如当前的ans+i仍然小于a[i+1],则没有影响,我们依然可以直接往后跳,否则,我们越过了a[i+1],那么我们应当加上i+1,注意,这有可能 阅读全文
posted @ 2023-11-11 09:41 gan_coder 阅读(21) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1661/ B题数据很小,直接bfs预处理就行 C题随便猜了一下,设mx=\(max\{a_i\}\)最后的值应该是 mx,mx+1这两个值,二分一下,就行 D题刚开始从前面考虑,陷入僵局,一度非常的困,学习凯库勒睡了一会,就突然想到了, 阅读全文
posted @ 2023-11-09 20:35 gan_coder 阅读(21) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1894 A题题意说一堆,还看了好几次,读懂之后就很简单,直接输出最后的。 B题直接数一下有多少个大于2的块即可。 C题每次找到最后一个,判断一下即可,同时打上标记,保证时间复杂度。 D题手玩之后发现我们可以用以下方式插入b 将大于等于a 阅读全文
posted @ 2023-11-08 16:45 gan_coder 阅读(42) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1842 C题很像leetcode上买股票那几题的套路,直接dp就行 \(z=max\{i-j+1+g[j-1] (a[i]=a[j]) \}\),g[j]表示以i结尾的最大值,很显然可以将跟j有关的项分离出来,然后对于每种ai维护最大值 阅读全文
posted @ 2023-11-08 16:27 gan_coder 阅读(16) 评论(0) 推荐(0)
摘要:cf797e 还是暴力,将不同的询问根据k分开,然后bfs,建出一棵树,然后dfs。 时间复杂度:O(能过) 稍微口胡分析一下 大概是 \(min(1,q[1])*n/1 +min(2.q[2])*n/2+min(3,q[3])*n/3+.....\) qi表示第k=i的询问个数 因为每一种k它最多 阅读全文
posted @ 2023-11-06 20:06 gan_coder 阅读(45) 评论(0) 推荐(0)
摘要:cf1582F2 对于每种数可以维护一个列表v[x],表示到当前位置,最后一个数小于等于x,能够取到的值,对于当前的数ai,我们可以用v[ai]中的值x与ai异或,来更新v[ai+1],v[ai+2]后面的值。 然后就是有两个优化,每次我们更新完后,都对v[a[i]]清空,因为只有两个相同数之间的数 阅读全文
posted @ 2023-11-06 19:50 gan_coder 阅读(13) 评论(0) 推荐(0)
摘要:cf1709E. XOR Tree 贪心是显然的,关键是如何合并两棵子树的信息,可以采用启发式合并。 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<map> #include<vecto 阅读全文
posted @ 2023-11-05 21:00 gan_coder 阅读(39) 评论(0) 推荐(0)
摘要:cf1834E 首先可以估计一下答案的量级,因为小于答案的质数都要必须要出现,5e6以内的质数大概就是3e5,所以答案不超过5e6。 我们维护以i右端点的lcm的值,这些值的数量不会太多,因为每次增长都至少×2,所以是log级别。 每次新加的时候记得更新和去重即可。 #include<cstdio> 阅读全文
posted @ 2023-11-05 18:37 gan_coder 阅读(16) 评论(0) 推荐(0)
摘要:添加链接描述 B题直接前缀后缀预处理一下没了 C 首先题目保证有解,那么我们可以确定"("和")"的数量,显然前面全部填(后面的全部填)肯定是合法的,然后交换两个最近的,影响最小,判断一下即可。 D题首先根据%k余数判断是否有解, 然后肯定是直接往下走到最大,然后走过去,rmq预处理即可。 阅读全文
posted @ 2023-11-05 00:33 gan_coder 阅读(34) 评论(0) 推荐(0)
摘要:添加链接描述 C题显然二分0的数量,然后双指针,算一下前缀和后缀1的数量即可。 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<map> #include<vector> #include 阅读全文
posted @ 2023-11-02 16:56 gan_coder 阅读(30) 评论(0) 推荐(0)
摘要:Educational Codeforces Round 129 (Rated for Div. 2) B可以看作一个无限长的序列由a进行重复拼接,我们直接计算一下是哪个即可。 C判断无解之后直接模拟即可 D IDA*就行每次从大到小搜,实际非常快。 #include<cstdio> #includ 阅读全文
posted @ 2023-11-01 00:08 gan_coder 阅读(21) 评论(0) 推荐(0)
摘要:Codeforces Round 907 (Div. 2) B题注意到每次都会至少下降1,所以不会超过30次,直接O(30n)即可 C题感觉可能比D和F还要思维一些。 肯定是尽量多积累combo一些然后一次清空,那么我们能清空的最大值就是当前的最大值,所以每次用小的来累计combo,然后消除当前的最 阅读全文
posted @ 2023-10-31 17:17 gan_coder 阅读(255) 评论(0) 推荐(1)
摘要:D. Queue f[i]表示第i个F需要多少时间才能让所有的M都移到她后面,那么我们考虑转移,分为两种情况。 第i个F和第i-1个F挨着,那么显然f[i]=f[i-1]+1 假如中间隔着一些M, 可以分为两种情况,假如i可以在i-1完成之前追上它,那么就是f[i-1]+1,否则就说明 i一直在进行 阅读全文
posted @ 2023-10-30 18:32 gan_coder 阅读(31) 评论(0) 推荐(0)
摘要:这场D被切穿了。 A题 答案为 x 或者 x-1 1 B题 答案就是最长的连续一段的长度+1 证明的话大概可以将它看成是几段连续上升和下降的段,然后在峰谷、峰顶分别填上最小、最大,剩下的就依次递增或递减就行。 C题 将一段连续的0/1视作一个块,那么我们最小化这个块的数量就行。 D题如果猜到如果有解 阅读全文
posted @ 2023-10-21 09:39 gan_coder 阅读(9) 评论(0) 推荐(0)