
codeforce
思维题目
OKllllllll
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 164 (Rated for Div. 2)
可以发现操作会删去a[i],等于序列变得更加完美。当a[i-1]=a[i+1] and a[i-1]!=a[i]为保持序列不在更加完美,我们应删去前后最短的连续等于a[i-1]序列 双指针遍历即可,注意开头可能也会存在一段。显然我们让每种颜色平分n个位置就行了。那么最多的颜色就会有n/m个,如果鲍勃操作的次数 k 小于 n −n/m,最后的丝带就变不成相同颜色,反之就可以。某一位上相同时对乘积不会产生贡献。当位上不同时,根据均值不等式,不同位的差越小则乘积越大,所以只需满足所有位上数不同时差值尽可能小。原创 2025-02-20 10:07:33 · 197 阅读 · 0 评论 -
codeforce round 938 div3
考虑用两个map动态维护一个长度为m的区间,ma1代表当前区间出现的数,ma2代表b数组的数。当第i个数加入第i-m个数删除时,当ma1[a[i-m]]<=ma2[a[i-m]]此时贡献减一,当ma1[a[i]]<ma2[a[i]]贡献加一。由于k太大不能直接模拟 考虑对n个依次计算,从前向后攻击次数为k-k/2,从后先前为k/2次,前导后,后到前计算其可以攻击到得位置 两侧数量即为可摧毁数量 注意特判k>=sum时。对于一个数x,其贡献为min(ma1[x],ma2[x])。原创 2025-02-13 00:10:50 · 113 阅读 · 0 评论 -
codeforce round 999 div2
有|x-y|<=1.如果最后需要构成的数是 a,它一定是由两个相邻或相等的数相加得来的。令这两个数中最小的那个数为 b,那 a=b+b 或 a=b+b+1。暴力去拆解b中每个数。设腰长为x上底为a下底为b,我们显然能发现2x>abs(a-b) 排序后找到x 枚举a二分b即可。我们最理想情况是 偶奇奇奇奇 注意特判。原创 2025-02-02 00:55:11 · 183 阅读 · 0 评论 -
codeforce round 961 div2
我们要去更多的选择x和x+1 可以用map做标记统计最大金额。原创 2025-01-31 23:36:45 · 234 阅读 · 0 评论 -
codeforce977 div2
我们可以发现答案最大为n,考虑尽可能让mex大,尽可能从小到大依次填充 对于出现大于一次的数x我们应该找到比x大的且未出现 如果一次一次加则会超时,考虑递推方式。由于一开始的队列是固定的,所以编号 ai 的人第一次讲 PPT 如果比编号为 aj 的人第一次讲靠前,则 i 一定小于 j。发现当一个人讲完一张 PPT 之后可以安排到队列的任意位置,所以他下一次再讲哪一张 PPT 都可以做到。最终只需要判断讲每张 PPT 的人第一次在 b 中出现的下标相对顺序是否与 a 中每个人的相对顺序相同即可。原创 2025-01-30 22:17:54 · 125 阅读 · 0 评论 -
codeforce round 982div2
用map记录每个点都需要多少长度才可以变,dfs当前序列长度。我们需要子数组子数组能以非递增顺序 则需要每个数都满足。尽可能重叠 计算长宽最大值。原创 2025-01-30 01:58:35 · 128 阅读 · 0 评论 -
Ethflow codeforce round 1001 div1+2
逆转序列并不会使和发生变化,所以逆转序列需要配合差分使用 我们发现差分操作最多执行n-1次。对于每个位置 从左从右最长回来的时间为2(i-1),2(n-i),判断每个位置是否符合要求。ai-ai-1即和变为an-a1。枚举每次操作的最大值即可。原创 2025-01-30 00:00:27 · 236 阅读 · 0 评论 -
codeforce round 988 div3
博弈 a会先选较大的数b会用不配对的数匹配 然后a选用剩余可配对数的数b依次配对。只存在一种操作即减去相邻最小的 从前往后依次减小后判断是否不递减即可。根据题意 我们要对每一行排序 在跟列增大判断是否连续的。原创 2025-01-28 01:22:35 · 138 阅读 · 0 评论 -
Edu codeforce round 171
我们一部分已经与0一起买入 剩下的只有无法与0一起购买的物品 我们可以将剩下的最贵与最便宜的一起买入。可以使用二分 存在单调性 k越大越容易满足 |a[i]-a[j]|<=k 数据很小可以暴力。奇数时存在一个a[i]与非单元格上点配对 枚举i的位置每次取最大值。对于0我们一定会买入该产品且我们希望0与当前最贵的商品一起买。偶数时只需要两两满足条件即可。原创 2025-01-27 21:39:52 · 115 阅读 · 0 评论 -
codeforce r997div2
我们尽量让f(a)较小则可以构造出较大的g(a);可以按照 1 1 2 3 4 5 k 1的方式构造 n=6时需要特判。假设pi比k个元素大,则有P(k+1)=i;原创 2025-01-27 21:21:10 · 109 阅读 · 0 评论 -
codeforce962div3 A-E
思路:对于子区间我们可以考虑用前缀和处理为1时加一为0时减一,这样当一段前缀和为零时此时01相等,对于小区间被多少大区间覆盖考虑用组合相乘计算(大区间长ans小区间长度为n时此时有ans-n+1种组合)但此时区间个数还是n平方复杂度会超时。这里cnt维护的是左边区间的长度(假设前缀和相同的点x1,x2,x3,x4,x5,我们选择任意两个点都可以作为一个区间,我们发现当x1为左端点 x2x3x4可作为右端点,x2时x3x4x5可作为右端点,组合中x1提供的方案数不变,因此我们可以预处理出右端点,维护后缀和)原创 2024-08-14 01:45:44 · 600 阅读 · 0 评论 -
codeforce 964div4
按照贪心的原则,对于字符串中的?尽量满足与子字符串中字符匹配,其他字符也尽量满足匹配.每次匹配成功l向后移动一位当l越界后重新变为0,k记录长度当大于子字符串长度则满足题意。1. 若要将所有数字变为0,则只能操作[y/3] ,则要多进行操作[y/3 ] ,另一个数字要进行x * 3,则x = 0。2. 什么数字最容易变为0 , 最小的数字,先让最小的数字变为0,然后让其他的数字变为0。3. 每个数字变为0的操作次数是不变的,则可以用前缀和。只需间隔区间长度大于s,注意要插入首端与末尾的区间。原创 2024-08-14 01:12:17 · 268 阅读 · 0 评论