
CF
文章平均质量分 54
SuperRandi
听取wa声一片
展开
-
D. Paint the Tree(思维+dfs)
思路:既然要将树全部染成蓝色,那么A一定比B染色更快,我们要尽可能快的让B到达已经被染红的节点,一旦到达某个红色节点,我们就可以将问题转换为从该节点出发,用最少步数走完所有节点,答案显然是边数*2-最长路径长度,所以我们要B到达染红节点的最短时间,我们可以存储A到B这条路径上的所有节点,以及A到B的距离,由于每次两个节点都要移动,所以B到达染红节点的最短时间就是这条路径长度的中点处(distAB+1)/2,然后根据这条路径存储的节点找到中点处的节点,再对该节点进行dfs找出最长路径,即可得到答案。原创 2025-05-10 10:19:27 · 85 阅读 · 0 评论 -
A. Row GCD(gcd的基本性质)
所以我们需要先处理出gcd(|a2-a1|,|a3-a1|,......|an-a1|),再每次与a1+bj进行gcd就可以得到答案了。结合题目所给的a1+bj,a2+bj...... an+bj。原创 2025-05-08 20:54:28 · 284 阅读 · 0 评论 -
B. Zero Array(思维)
思路:每次给任意两个不同下表的数减-1,相当于在这个数组总和S上减2,S为奇数则不可能变为0,S为偶数时,一定存在两个序列组成两个S/2,这样每次都是在两个S/2上各减1,减S/2次刚好所有数为0,如果存在一个数大于S/2那么最后一定不能减到0。原创 2025-05-08 19:02:09 · 192 阅读 · 0 评论 -
B. Spreadsheets
【代码】B. Spreadsheets。原创 2025-05-07 21:21:59 · 265 阅读 · 0 评论 -
CF Petya and Array(前缀和+逆序对+离散化)
【代码】CF Petya and Array(前缀和+逆序对+离散化)原创 2025-04-09 12:08:11 · 156 阅读 · 0 评论 -
CF The Walkway
(为什么pre[i+1]-pre[i-1]-1需要减一,因为我们要计算第i个点对区间(v[i-1],v[i+1])的影响,不能包含第i+1个特殊点,所以减去的是第i+1个特殊点。思路:先预处理出每个区间(左开右闭)需要吃多少个饼干,用pre前缀和数组统计前i个特殊点区间吃多少个饼干,枚举第i个特殊点删掉后需要吃多少块饼干,例如我们要删掉第i个特殊点,现在可以删除一个特殊点,问这个人最少吃多少饼干以及有多少种删除方式。一条路上有几个特殊点,一个人会在以下这几种情况吃一块饼干。原创 2025-03-07 15:00:36 · 272 阅读 · 0 评论 -
CF862B Mahmoud and Ehab and the bipartiteness(二分图的性质)
添加的边数就是cnt[1]*cnt[2]-n+1条。一个二分图最多有cnt[1]*cnt[2]条边。原创 2024-11-18 21:31:32 · 214 阅读 · 0 评论 -
BFS与Dijkstra的区别
(2)Dijkstra算法时间复杂度:朴素版的时间复杂度为O(n*n),堆优化版的时间复杂度为O(mlogn)所以根据以上对比,我们会发现在某些情况下bfs算法的时间复杂度会比Dijkstra算法小很多。,其中V为顶点数,E为边数。这是因为在最坏情况下,需要访问所有的顶点和边才能完成遍历。这两种算法都是常见的最短路算法,但在做题中使用哪种算法往往与其时间复杂度有关。原创 2024-10-24 23:36:17 · 315 阅读 · 0 评论 -
Educational Codeforces Round 168 (Rated for Div. 2)
据说这场比赛非常简单,但本蒟蒻却认为比以往还要难(;注意题目保证给定网格中最多有一个连通块。原创 2024-07-31 12:02:14 · 362 阅读 · 0 评论 -
Codeforces Round 900 (Div. 3)
一开始只用了二分,每次查一个区间就reversse一次,没想到TLE了(/(ㄒoㄒ)/~~,事实证明我就是蒟蒻🤣),然后改了一个多小时,改不动了直接看大佬的代码,发现要用差分和前缀和做,而且我们还可以发现区间[a,b]在[Li,Ri]中是对称存在的,比如Li=1,Ri=4,x=2,那么a=2,b=3(当时做题的时候怎么就没想到呢😱),接下来就是计算每个位置要翻转的次数,如果是奇数次则与对称得位置翻转,详情请看代码。:如果S(n)==x,说明只有取走所有数才会成立,即k==n输出YES,反之NO。原创 2024-07-07 15:29:45 · 416 阅读 · 0 评论 -
Codeforces Round 903 (Div. 3)A~F
找规律,通过模拟样例可以发现三根线要一样长,那么最终长度肯定是要与最短的那根线一样长,如果某根线不能剪成最短长度,说明这根线不能被最短的长度整除,直接输出NO就可以了,如果能被整除,那么比较这两根线的长度和/最短长度得到的结果是否会大于3,大于就输出NO,反之YES。这道题我们要从后往前dp,定义dp[i]为从n到i的最少操作次数,由题意可知我们对一个数字有两种操作,删除:dp[i]=dp[i+1]+1,保留 :dp[i]=dp[i+a[i]+1],我们只需要在这两种操作中取最小值就可以了。原创 2024-07-06 16:44:59 · 897 阅读 · 0 评论