![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
codeforce
文章平均质量分 86
m0_74911187
这个作者很懒,什么都没留下…
展开
-
Codeforces Round 935 (Div. 3)F(贪心)G(模拟)
可以用对顶堆来做,一个大根堆维护将要采集的蘑菇,一个小根堆维护已经采集的蘑菇,每次采集蘑菇都看一下当前蘑菇魔力值会不会变成0即可,无论在哪一个堆的蘑菇的魔力值变成0,都将这个蘑菇弹出堆。分钟结束时回到队列中排队,同时每名学生都有一个优先值,当他回到队列的时候,他会站到第一个大于等于他的优先值的同学后面,也就是他会插队,如果有几个同学同时返回队列,他们会按。的蘑菇的魔力值都会变成0,你不会拿魔力值为0 的蘑菇,问最多能采集多少价值,且在最大价值的前提下找到采集蘑菇数量最小的一种方式。原创 2024-03-20 15:02:43 · 588 阅读 · 0 评论 -
Codeforces Round 933 (Div. 3)(F-G)(单调队列优化DP、二分+思维、01bfs求最短路)
我们可以为每个颜色建立一个虚拟节点,对于这个颜色连接的所有点,都连一条指向虚拟节点边权为1的有向边,然后从这个虚拟节点向这个颜色的所有点都连一条边权为0的所有边,这样就可以表示在一条地铁线上走不需要花费费用,因为边权只有0和1,我们就可以用01bfs,即双端队列bfs求最短路,就可以得到从起点到终点的最短路了。:这道题很明显的用单调队列优化dp,跟滑动窗口一样,用单调队列优化dp求出每一行建桥的代价后,再对列求一遍前缀和,找出最小子段和即可。,对于支架的要求是,在桥的两端必须要建支架,即。原创 2024-03-12 19:44:03 · 785 阅读 · 0 评论 -
Codeforces Round 928 (Div. 4)( F(dfs+小技巧),G(树上dp) )
一定是会超时的,因此我们看如何优化,会发现,坐标和为奇数与偶数的格子是互不影响的,也就是所有可能的X形状的格子,要么坐标和全是奇数,要么全是偶数,即下图中,X形状的格子要么全是蓝色,要么全是棕色。给定一棵树,树上的点要么是P,要么是S,要么是C,C可以替换成P,也可以替换成C,要求在树中加一些墙,使得任意的P跟S之间都是有墙的。如果这个题没有C的话,我们可以用并查集缩点然后建图,统计每个S点的度数即可。的网格,网格上的点不是黑色就是白色,要求修改最少的点,使得网格中没有X形状的黑色网格。原创 2024-02-21 00:10:42 · 2054 阅读 · 0 评论 -
Codeforces Round 923 (Div. 3)F
因为要求最小边权,我们可以想到要用kruskal算法,首先将所有边权从大到小的顺序排序,然后按边权从大到小建立图,用并查集来判断环,因为是从大到小遍历边权,因此如果第一次遍历到两个节点在一个集合中,这条边就是所在环的最小边权,然后就可以找到最小的环的边权,同时记录下来最小边权的两个节点,再跑一边dfs找到换上的节点即可。:给定一个n个点,m条边的无向图,图不一定连通,要求找到图中的一个环,该环上的最小边权比图中所有环的边权要小,输出这个最小边权,所在的环上的节点数量以及按顺序输出所在的环上的所有节点。原创 2024-02-14 20:27:36 · 228 阅读 · 0 评论 -
Codeforces Round 756 (Div. 3)(E2,F)
求一遍前缀和,前缀和中是可能出现负数的,此时枚举左边界,右边界不存在单调性,因此我们不能二分来查找右边界,这个时候我们可以用st表预处理出来任意一段前缀和中的最小值,然后我们二分的。条边的树,一个人在1号点,他的朋友们在其他点,每过一秒,每个人都可以移动一步,问这个人在走到任意叶子节点的过程中是否能不被抓住,如果不能,那么找到至少需要几个朋友在树上。该点距离最近的朋友的距离,因为是一棵树,因此从1号点到任意的叶子节点都只会有一条路,所以对于从1号点到任意叶子节点的路径中,如果存在。首先,我们对于原序列。原创 2024-02-04 21:34:35 · 597 阅读 · 0 评论 -
Codeforces Round 920 (Div. 3)
每一次白色棋子会向下走一步,黑色棋子会向上走一步,因此,我们只需要判断两棋子相遇前的最后一步是谁走的,然后再判断每个棋子应该往哪个方向一直走,例如,最后一步是白色棋子走,那么白色棋子就是白色棋子往黑色棋子的方向走,如果最后一步是黑色棋子走,那么就是黑色棋子向白色棋子的方向走,另一个棋子与之相同的方向走。的网格中,放入一个黑色棋子与白色棋子,每一次,白色棋子可以选择向正下方,左下,右下,三个方向移动棋子,黑色棋子每次可以选择正上方,左上,右上三个方向移动棋子。数组中的第一项,如果不是,所有的权值都要减小。原创 2024-01-22 19:10:13 · 933 阅读 · 0 评论 -
Codeforces Round 916 (Div. 3)(G未补)
题意:A任务需要一分钟完成,B任务需要两分钟完成,……以此类推,给定一串任务s,由大写英文字母组成, 第i个字符表示完成了s【i】,问能完成多少个任务思路:统计一下每个字符出现的次数,然后根据题意判断一下即可。原创 2023-12-20 22:23:46 · 1590 阅读 · 0 评论 -
Codeforces Round 797 (Div. 3)
思路:记录下来每个位置a数组和b数组的差值,如果差值为负数,即a[i]<b[i],那么一定不满足题意,对于能减至0的位置打个标记,那么对于没有打标记的位置的差值都相等,对于有标记的位置的差值要大于没有标记的位置的差值,否则不满足题意。题意:对于给定的数组a,和q个操作,每次操作将a中的某个位置k减小d,要求数组中每个数的前一个数要大于等于后一个数,如果当前数大于前一个数,那么就会变成前一个数,问,每次操作后数组中有多少个不同的数。思路:白色的权值为1,黑色为0,求一遍前缀和,然后对于每k段取min即可。原创 2023-12-14 22:37:22 · 785 阅读 · 0 评论 -
Codeforces Round 805 (Div. 3)
按题意找到比当前数小的最大的10的整数幂的数,然后差值即为答案,我这里写复杂了,用的字符串,记得要考虑前导0。原创 2023-12-14 15:03:28 · 751 阅读 · 0 评论 -
Codeforces round 900 (Div.3)(G未补)
我们会发现,对于任何一个位置,如果这个位置翻转次数位偶数,等价于没有翻转,如果是奇数,就需要跟以区间中心堆成的点交换位置,例如,如果我们进行了前两次操作,那么得到的结果就是 jghcdegdia,中间的八个字符等于没变,左右端点的两个字符交换了一下位置,因此我们可以得到结论,如果一个位置操作了奇数次,等价于将这个位置和以其所在区间的中心的对称位置交换位置,如果为偶数次,等价于没有操作。给定一个长度为n的序列a和q个询问,每个询问给定一个l,k,要求找到最大的r满足f(l,r)>=k……原创 2023-09-27 21:57:13 · 423 阅读 · 3 评论 -
Codeforces Round 895 (Div. 3)
那么显而易见,我们需要让前面那部分尽可能大,后面那部分尽可能小,前面那部分的数的个数一共是n/x个,后面那部分的个数一共是n/y个,对于一些下标,它可能即是x的倍速,也是y的倍速,那么它可能会先加上后减去,所以前面那部分的个数和后面那部分的个数要减去这些重合的下标的个数,重合的下标的个数就是x和y的最小公倍数,对于前面那部分,我们就可以从n开始往前选择需要的个数,对于后面那部分,我们就从1开始往后选择需要的个数,这样得到的答案就是最大的。题目大意就是给定一个区间【l,r】,找到两个数a,b满足两个条件。原创 2023-09-09 21:37:01 · 110 阅读 · 0 评论