
思维
文章平均质量分 51
bigstrength
记录学习的算法,以及好点的题
展开
-
D. Mark and Lightbulbs
cf 思维 D. Mark and Lightbulbs原创 2022-07-16 11:30:47 · 496 阅读 · 2 评论 -
Educational Codeforces Round 127 (Rated for Div. 2) C. Dolce Vita
C. Dolce Vita本题先预处理出所有商店糖果价格的前缀和sum[i],显然当金币的数量小于sum[i]则当天不能买到i个糖果,反之可以。所以我们还要预处理出b[i],表示前i个商店涨价后总价格最后小于x的天数,可以二分处理。答案的构成是当天没有涨价能买的糖果数量ans1加上后面慢慢涨价后能买到的数量ans2。显然, ans1是前缀和最后一个小于x的下标。ans2的计算:我们从后往前遍历数组b,然后定义一个变量r存b[i + 1],一开始r = 0,产生的贡献是当天可以涨价的天数减去后面一天涨原创 2022-04-23 10:52:09 · 424 阅读 · 0 评论 -
Educational Codeforces Round 127 (Rated for Div. 2) D. Insert a Progression
D. Insert a Progression思路:本题要发现只要插好1和x后,其余的数插到数组里面是不会产生贡献的。所以现在的问题转化为1和x怎么差产生的贡献最少?设原数组中最小的值为minminmin,最大的值为maxmaxmax。如果1==min1 == min1==min则可以把1放在最小值边上不会产生贡献,同理把x < max,也不会产生贡献。考虑 x>maxx > maxx>max 和 1<min1 < min1<min的情况:肯定能想到优先把原创 2022-04-23 10:33:54 · 687 阅读 · 1 评论 -
Codeforces Round #783 (Div. 2) E. Half Queen Cover
E. Half Queen Cover奇怪的构造题思路:当 nnn模 333 为222的时候,可以类似于这种构造:当模数不是2的时候,我们可以在右下角重新染色1个或者2个方块让它变成模数为2 的,例如,我们可以先把蓝色的染色后再去做模数为2的。代码:#include <bits/stdc++.h>using namespace std;int main(){ int n; cin >> n; int mod = n % 3;原创 2022-04-21 17:18:14 · 498 阅读 · 0 评论 -
Codeforces Round #782 (Div. 2) C. Line Empire
C. Line Empire思路:本题的核心需要考虑:每次占领新的王国以后是否需要更换首都的位置?只需要比较一下:更换军队位置的花费和更换后可以减少占领后续王国的花费进行比较,如果前者大就不换,后者大就换,这样总花费是最小的。我们需要先预处理出xix_ixi的前缀和。更换位置的花费: 假如是从第 preprepre个王国占领到第iii个王国, w1=abs(c[i]−c[pre])∗aw1 = abs(c[i] - c[pre]) *aw1=abs(c[i]−c[pre])∗a假如更换以后可以减原创 2022-04-18 13:55:20 · 424 阅读 · 0 评论 -
Codeforces Round #782 (Div. 2) B. Bit Flipping
B. Bit Flipping思路:分情况讨论,一个数xxx翻转偶数次不变,翻转奇数次变成x^1。1.kkk为奇数,则如果一个数不被选到,那么翻转k(奇数次),则原来是000就能变成1,原来是111就变成000。那么,我们肯定优先从左到右,优先翻转原来为111的,这样前面尽可能多的的111被翻转了k−1k - 1k−1次,翻转偶数次还是1。2.k为偶数,同理,我们肯定优先从左到右优先翻转原来为000的。3.假设操作完111或者2以后还有剩余,就把剩余的kkk全部给最后一个。假如最后剩下的kkk为偶数原创 2022-04-18 13:34:12 · 302 阅读 · 0 评论 -
2021-2022 ICPC, NERC, Northern Eurasia Onsite (Unrated, Online Mirror, ICPC Rules, Teams Preferred
2021-2022 ICPC, NERC, Northern Eurasia Onsite (Unrated, Online Mirror, ICPC Rules, Teams Preferred)C. Connect the Points题意:给你三个点,让你添加若干条平行于xxx轴和yyy轴的线段,让这三个点在一个连通块上,问在所有的方案中,所有添加的线段长度最小的方案。思路:找到三个点横坐标大小位于中间的那个,令其为xm,找到纵坐标大小位于中间的那个,令其为ym,我们用平行xxx轴和平行yyy轴原创 2022-04-14 15:49:42 · 769 阅读 · 0 评论