![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
cf
ye_min_
一个acmer
展开
-
Codeforces Round 950 (Div. 3)
其中x轴的排序时从大到小,y轴的排序是从小到大。如果想移除这个台灯后面积变大,这个台灯必须得位于边界,并且两个相邻的边为边界才行, 这个点也是边界改变的点。所以每次改变边界的时候都把这个点标记。所以用两个map 分别存每个元素的x和 y坐标 然后最后看两个矩阵的每一个元素的x和坐标是不是对应的。思路:从底下往上算,每次都修改最左边的值和最下面的值,并加上左边的面积,就是总面积了。思路:其实就是看两个矩阵的每行和每列的元素是不是一样的。好久没写题解了,今天来写个题解。原创 2024-06-04 12:04:12 · 433 阅读 · 0 评论 -
B. Getting Zero
x点到mod的操作数可以视为其最短路。于是可用宽搜从1到mod建图。所以每次求数x到mod的最下操作数变为到mod这个顶点的最小边数。有边权为(x+1)%mod 和(2*x)%mod 两种边权。这题可以使用bfs的做法,特记录在此。原创 2024-04-23 11:51:51 · 184 阅读 · 0 评论 -
Codeforces Round 877 (Div. 2)
如果是的每一列的差都是m的倍数即可。可先从最大的奇数行到最小的奇数行,在从最大的偶数行到最小的偶数行。每一行内的数差为1,可不更改。只需要保证每一列里相邻的数差为1即可。所以只需要记录每个数的位置,并保持最大的数的位置在1和2的位置之间即可。要求的是最小的排列数,只要让最大的值在1,2之间即可。原创 2024-04-10 17:35:03 · 127 阅读 · 0 评论 -
Codeforces Round 806 (Div. 4)
这题可以考虑贪心的思想。因为dp的话具有后效性。因为要上限最高,所以尽量让坏钥匙放在后面,因为不会降低上限。所以我们遍历一遍分界点,从第一个到最后一个。其中坏钥匙最多只要计算32个左右,因为数值最大为1e9。实际上就是让四个部分关于中心点对称。所以只要遍历四分之一区块即可,通过推导推出另外三点于这点的关系。遍历一便当这个数小于这个数的下标时,就二分一下求出这个数大于的队列中的下标的数量。并将这个下标放入队列中即可。(队列中放的都是下标)这题数据较小遍历每个字符串暴力求解即可。原创 2024-03-29 21:03:37 · 521 阅读 · 0 评论 -
Codeforces Round 817 (Div. 4)
所以我们可以将d第n-2 位数设为一个极大的数(2^30) 这样的话可以保证第三十位始终不被占用从而使得第n位不出现过。可以先从第一位到第n-3 为放任意不相等的数,可以为1--n-3. 但前n-3 位的异或和不能等于n-2 位。所以如果前n-3 位的异或和等于n-2 位就放另一个没出现过的数 eg:n-1 .先将未改变之前的总数记录,然后枚举每一位并记录改变后对于总数的贡献,并对这个记录的数组进行排序,将最大贡献的排在前面。这题可以采用二维前缀和的做法。题意位奇数位上的数异或和等于偶数位上的数的异或和。原创 2024-03-28 00:31:35 · 307 阅读 · 0 评论 -
Codeforces Round 876 (Div. 2)
我们可以先得到4个0 ,再在第二个位置插入0. 所以我们可以从后向前遍历,如果为0 直接输出0,否则计算连续1的数量并输出。在第一个和第n个位置必须要为1,所以可以保证满足条件的最小条件为ceil(n-1/k)+1。这题前提条件是ai要小于等于开启灯泡的数量。又因为文中提到已经开启的灯泡坏掉也算分,所以,每次可以保证ai 的灯泡最多可以开ai个。因为再多就会坏掉,无法再开启。通过分析题目我们可以得出在1的后面必须要有0.否则无法得到1。在根据样例1 : 1 1 0 0 0 来分析。原创 2024-03-26 17:14:17 · 184 阅读 · 0 评论 -
Codeforces Round 936 (Div. 2)
此题意思为一个n个节点的树,删去k个节点后联通块最小的最大值。所以采用二分答案,二分找到联通块的大小,然后再dfs 找如果联通块大小大于等于这个的数量大于等于k+1的话就满足条件。最后找到最大值即可。先找找到最大子数列,然后每次都增加最大子数列,(记得要更新最大子数列,每次相当于增加了一个自己)。(最后得出的值模数必须要为正,所以先加一个mod。直接进行排序,从后面往前遍历到中位数的位置,在此期间如果有数等于中位数,就将修改次数增加1.再dfs的过程中 :如果联通块的大小大于等于要求就间切断和父节的联系。原创 2024-03-23 19:24:45 · 207 阅读 · 0 评论 -
Codeforces Round 797 (Div. 3)
本来以为是找一对尽量和可以被k整除的数,后来改为先记录每一个物品除 k 的商,每个数取余数。主要看ai 于bi之间的差和ai 与0之间的差大小,第二种情况不能大于第一种情况。可以理解为多个区段的首尾判断,枚举一次,每次更新下一区段的开始位置即可。可以通过前缀和记录w的数量,来查找k的区间中,w的最小数量。在使用双指针从头尾扫刚好大于等于k的数,更新总和。原创 2024-03-22 08:55:44 · 485 阅读 · 0 评论 -
Codeforces Round 935 (Div. 3)
先分别求出两种各自再(m+1)的时间里最大可拥有的数量,因为两种的释放时间存在最小公倍数,即可同时开始放,所以可同时满足各自的最大数量。这题模拟即可,使用一个前缀和来计算前后的1的数量,再维护一下 |n/2-i| 最小即可。应为要考虑最大的值和要维护尽量最小的蘑菇数,所以使用一个优先队列,每次排除最小值。在m之前可加上 min(ai,bi) 在m处则计算从1到m的最小情况。先记录出x的位置,模拟一次二分的过程,如果未找到x则交换一下位置即可。只需满足让b的人住满就可以了。其余的则按照最小标准来算。原创 2024-03-19 21:16:37 · 576 阅读 · 2 评论 -
Codeforces Round 905 (Div. 3)
思路:要作为唯一的子数组,左端的数必须时第一次出现的位置,否则会被取代,而贡献值由第一次出现的数提供,在最后出现的位置结算一次贡献,每出现一个数贡献加一,且不会消失。思路:如果数量为奇数个的字符要大于k+1的话,则无法形成回文(每次k都可以使一个字符数量变为偶数,当只有一个字符数量为奇数时,可以放在中间)当ai-1 < ai 让 xi 不断减一,直到 ai-1*2<ai.思路:如果最左端的r于最右端的l相交,则全部相交,否则存在不相交。当ai-1>ai xi不断加一,直到 ai>=ai-1.原创 2024-03-07 13:20:57 · 371 阅读 · 0 评论 -
Codeforces Round 908 (Div. 2)
思路:要求找到两队的相等,则至少要有两个数出现两次,则分别让a为1和2 .1和3.原创 2024-03-04 23:59:40 · 351 阅读 · 0 评论 -
Good Bye 2023 (CF)
通过169,961,196,三个数来构造。可向196后面加100的倍数,向169,961中间加0.思路:当b整除a时,b=a*p。p为x的最小质因数。x=b*p =b*b/a.当b不能整除a时,x=lcm(ab)思路:直接看是否能整除即可。原创 2024-02-18 16:38:56 · 360 阅读 · 0 评论 -
Codeforces Round 925 (Div. 3)
https://img-home.csdnimg.cn/images/20231127111739.png原创 2024-02-17 18:11:53 · 516 阅读 · 0 评论 -
Codeforces Round 921 (Div. 2)
思路:要想满足所有条件,必须是没k个字母在一起,再循环n次的形式,可以开一个字符串记录每k个字母循环的最后一个字母,如果没有n个循环,就从第一个字母向后列举,没有出现过就加入字符串中。题意:判断给出的长度为m 的字符串,其是否可以满足由n个前k个字母组成的字符串是其子序列。如果不是,输出一个长度为n 的不是其子序列的字符串。题意: 在n个和为x的数中,找出其最大的 gcd.思路:可以判断出这个gcd 一定为x的因数。原创 2024-01-28 10:43:07 · 374 阅读 · 0 评论 -
Educational Codeforces Round 139 Editorial
1.若在后边还存在 B 但和上一处的 B 不相连----就是 w 和 B 连在一起。先遍历找出一个上下两格不同的一列, 在分别从两边向边缘处遍历。2.通过dp 计算各处B的数量。原创 2024-01-11 13:35:39 · 348 阅读 · 0 评论 -
Codeforces Round 854 by cybercats (Div. 1 + Div. 2)
思路: 在给出的p序列中找不同的数字,如果出现了相同的数字则不需要删除原数组中的数字。本题使用了count 函数,作用是在a+1,到a+n+1中统计,某个数的数量。2.如果数组中出现了1,则无解,因为1无法改变也无法被改变。思路:学习了jiangly 大佬的思路。1.如果全部相同,则不需要操作。4.把其他数依次和2进行操作。原创 2024-01-02 16:10:52 · 383 阅读 · 1 评论 -
Codeforces Round 867 (Div. 3)
2.通过求和公式我们可以发现、sum=n*(n+1)/2;所以当n为奇数时,第一位等于最后一位。==》 所以n必须为偶数。假设n 在第x位上,则1到第x-1位与第x 位的余数相同 -》 所以n必须放在第1位。这类题我们要通过题目条件和样例来发现规律,1.可以发现 n 必须放在第一位。思路: 不难发现,这是一道构造题。其实我也不太会,这里可能就是靠经验了,还是多做题多积累吧。当我们开心的写一个递归式以为可以ac时,却发现超时了。通过总结我们可以发现的。本题是一个推公式题。原创 2023-12-31 17:01:18 · 342 阅读 · 1 评论 -
Codeforces Round 842 (Div. 2)
1.出现一次, 2.出现两次 3.不出现。其中要注意的是: 1最多只能出现一次,而n至少要出现一次。显然最优的填法是:填入小于当前数字 d 的最大的数。若是,那么说明没有更小的值了,于是就输出。思路: 分为三种情况,所以可以用一个二维数组来记录数的下标。我们将能填补空缺的数全部存进一个。若不是则迭代器 −1。原创 2023-12-29 21:01:58 · 325 阅读 · 1 评论 -
CF1793C Dora and Search 题解
给定一个长度为 n 的排列 a ,问是否存在正整数 l,r 使得al,ar 均不为 al...r 中的最大值或最小值。思路:暴力的时间复杂度过高,肯定得进行优化。因为是要求一段序列,可以考虑双指针算法。因为给的是一个序列,所以可以知道最大值和最小值。所以用左右指针分别向内。如果两个指针都不为最值,即可直接输出。否则,更新最值和指针。本体代码实现较简单,只要想到双指针即可。原创 2023-12-29 14:49:00 · 363 阅读 · 1 评论 -
cf 1809c 构造题
先构造一个递减的前缀和数列,因为要k个正数,所以则要k个逆序对即可。原创 2023-12-29 14:17:16 · 351 阅读 · 1 评论 -
cf 1840c
大体可以理解为 一串数字如果有子串满足大于q的数,其个数要大于k,便用排列组合计算其的组成个数。2.当遇到不满足的时,就把之前满足条件的字串进行计算,并且计数器清零。1. 可以先遍历一遍数组,满足条件就把计数器加上1。2.开long long 防止数据爆int.2.对于数组字串的处理,计数器的应用。3.最后在遍历完后再进行一次判定。1.计数器要清零和不是变为一。原创 2023-11-10 12:11:44 · 114 阅读 · 1 评论