
Div2
文章平均质量分 70
Herod_
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #720 (Div. 2)
总算又能安心刷题了A. Nastia and Nearly Good Numbers题意:给定A、B,要求找出三个数 x,y,z。满足条件:x + y = z其中有两个数只能整除A,有一个可以整除A*Bx,y,z 各不相同思路:显然,z是最大的,让z整除A*B就行了 。那么令 x = A*(B-1) , y = A , z = A*B 就行了。这个时候,可以发现,B不能等于1,同时当B等于2的时候,x 和 y 相等。那么可以令 x = 3A ,y = A ,z = 4A。Code:原创 2021-05-08 12:09:03 · 235 阅读 · 0 评论 -
Codeforces Round #704 (Div. 2)(E待补)
A. Three swimmers题意:三个人走一个来回的时间分别是a,b,c。问当到达起点时间为t时,最少要等多久,会有人回到起点。思路:取模判断AC代码:#include <iostream>#include <bits/stdc++.h>#include <unordered_map>#define int long long#define mk make_pair#define gcd __gcdusing namespace std;con原创 2021-03-04 12:13:41 · 193 阅读 · 1 评论 -
Educational Codeforces Round 104 (Rated for Div. 2)
A. Arena题意:每个英雄如果挑战能力值更低的英雄,自己的能力值就会+1。问可能有多少个英雄可以达到无限大。思路:除了能力值最低的,都可以无限挑战最低的。AC代码:#include <iostream>#include <bits/stdc++.h>#include <unordered_map>//#define int long long#define mk make_pair#define gcd __gcdusing namespace s原创 2021-02-16 14:38:43 · 205 阅读 · 0 评论 -
Codeforces 1447E. Xor Tree(字典树/贪心)
Codeforces Round #683 (Div. 2, by Meet IT) 全文见:https://blog.youkuaiyun.com/qq_43461168/article/details/113175011E. Xor Tree题意:一个数组。每个元素会和与自己异或值最小的数连一条无向边。想要最终形成的图是一颗树。 至少要删掉几个元素。思路:首先肯定不会形成环。为什么呢。因为一个值,只会和一个异或起来最小的值相连。要形成环。就说明至少要有一个元素。同时连向两个元素。这显然不符合条件。环中边原创 2021-01-30 11:43:25 · 585 阅读 · 0 评论 -
Educational Codeforces Round 103 (Rated for Div. 2)
还没系统测试。仅供参考。A. K-divisible Sum题意:给定n,k。让找一个n个元素的数组,数组和可以整除k。并且数组中元素的最大值 最小。思路:如果n == k。那显然是1。 如果n > k,分两种情况。n%k == 0。那么全是1,和就是k的倍数了。否则,必须要有一些2。去凑成余数。所以最大值是2。 接着考虑 n < k,至少要和加起来要等于一个k。(k+n-1)/n 就是答案。AC代码:#include <iostream>#include <bit原创 2021-01-30 01:28:47 · 258 阅读 · 0 评论 -
Codeforces 1478D. Nezzar and Board(贝祖定理)
Codeforces Round #698 (Div. 2) 全文见:https://blog.youkuaiyun.com/qq_43461168/article/details/113405897D. Nezzar and Board题意:给定一个数组。只有一种操作。选择两个数x,y。然后数组增加一个新数 2*x-y。问能不能通过这种操作合成出 k。思路参考:https://www.cnblogs.com/HotPants/p/14344386.html思路: 先变换一下操作。2*x-y = x+(x-y)原创 2021-01-29 22:13:34 · 453 阅读 · 0 评论 -
Codeforces Round #698 (Div. 2)
A. Nezzar and Colorful Balls题意:签到题。思路:求最大的相同值的数量。AC代码:#include <iostream>#include <bits/stdc++.h>#include <unordered_map>#define int long long#define mk make_pair#define gcd __gcdusing namespace std;const double eps = 1e-10;co原创 2021-01-29 22:12:11 · 271 阅读 · 0 评论 -
Codeforces 1451E. Bitwise Queries(位运算性质)
Codeforces Round #685 (Div. 2) 全文见:https://blog.youkuaiyun.com/qq_43461168/article/details/113175779E. Bitwise Queries题意:给定一个未知的数组。长度为n。值在[0,n-1]区间。可以进行询问,询问任意两个数的任意位运算的值。AND,OR,XOR。要求在n+2(easy)/n+1(hard)次操作只能给出原数组。思路参考:https://blog.youkuaiyun.com/qq_45458915/artic原创 2021-01-29 13:26:22 · 213 阅读 · 0 评论 -
Codeforces 1455E. Four Points(枚举/贪心/几何)
Educational Codeforces Round 99 (Rated for Div. 2) 全文见:https://blog.youkuaiyun.com/qq_43461168/article/details/113105113E. Four Points题意:给四个点。移动他们,使得形成一个正方形。 求最小移动步数。思路参考:https://www.cnblogs.com/qieqiemin/p/14069636.html思路: x和y可以分开考虑。 首先枚举每个点作为四个点的任意一个点。也就是枚原创 2021-01-29 11:05:41 · 289 阅读 · 0 评论 -
Codeforces 1438E. Yurii Can Do Everything(暴力)
Codeforces Round #682 (Div. 2) 全文见:https://blog.youkuaiyun.com/qq_43461168/article/details/112697574E. Yurii Can Do Everything题意:一个数组,然后要找出所以 Good 子串的数量,定义是子串中 左右端点的异或值 等于 子串中所有数的和。思路:sum(l+1,r−1) ≤ 2⋅max(al,ar),因为异或操作,不可能产生进位。然后设现在 al是最大值。扫描一遍右端点。数出符合条件的个数。原创 2021-01-29 10:08:28 · 193 阅读 · 0 评论 -
Codeforces 1417E. XOR Inverse(字典树/贪心)
Codeforces Round #673 (Div. 2) 全文见:https://blog.youkuaiyun.com/qq_43461168/article/details/112606806E. XOR Inverse题意:一个数组。要找到一个x。使得数组中每个数都异或x之后。数组中的逆序对数量最少。思路:这种一般就是贪心构造。应且又和异或有关。那肯定和字典树有关。就往这个方向去想。首先用字典树,可以求出数组中逆序对的数了。dp[i][j] 表示第i位上 如果为j。存在的逆序对数量。考虑第i位上的0和1原创 2021-01-29 09:35:44 · 236 阅读 · 0 评论 -
Codeforces 1467E. Distinctive Roots in a Tree(树上差分)
Codeforces Round #695 (Div. 2) 全文见:https://blog.youkuaiyun.com/qq_43461168/article/details/112598001E. Distinctive Roots in a Tree题意:输出符合条件的点的个数。条件:从这个点出发到任意一个点的路径中没有重复的值。思路参考:https://blog.youkuaiyun.com/forever_shi/article/details/112467674思路:反过来想。 题目要求符合条件的点的个数。原创 2021-01-28 21:38:05 · 213 阅读 · 0 评论 -
Codeforces 1370F. The Hidden Pair(二分/思维)
Codeforces Round #651 (Div. 2) 全文见:https://blog.youkuaiyun.com/qq_43461168/article/details/112577099F. The Hidden Pair题意:给定一个数。给定一个s和t,保证他们不一样。然后每次可以询问一个点集合。 会返回这个点集合中。dis(s,x)+dis(x,t)最小的点。也就是到他们的距离和最小。如果有多个,随机返回一个。并且告知dis(s,x)+dis(x,t) 这个值。问能否在 14(easy)/11(h原创 2021-01-28 18:12:53 · 150 阅读 · 0 评论 -
Codeforces Round #697 (Div. 3)
A. Odd Divisor题意:判断n有没有奇数因子思路:签到题。只有2的幂次没有奇数因子。所以一直除2就行了。AC代码:#include <iostream>#include <bits/stdc++.h>#define int long long#define mk make_pair#define gcd __gcdusing namespace std;const double eps = 1e-10;//const int mod = 1e9+7;原创 2021-01-27 18:02:59 · 154 阅读 · 0 评论 -
Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2)
A. Prison Break题意:越狱。n*m的地图中,每个点上有一个人,地图中有个洞。要所有人移动到洞的位置。一次只能移动到相邻位置。问最少要多长时间。思路:求最远的点到他的距离就行了。最远的肯定是四个角的点。AC代码:#include <bits/stdc++.h>#define int long long#define mk make_pair#define gcd __gcdusing namespace std;const double eps = 1e-10;c原创 2021-01-27 12:36:24 · 211 阅读 · 0 评论 -
Codeforces Round #685 (Div. 2)
A. Subtract or Divide题意:给定一个n。两种操作。除以一个因子(自己不算)或者自减1。求把n变成1。最少的操作次数。思路:先特判掉1,2,3。然后分奇偶讨论。如果是偶数。那么除以n/2 就变成 2 了。然后再减1。只需2步。对于奇数。就算有奇数的因子。除一次的话,肯定没有办法变成2。最多变成3。而3变成1需要2步。也就是最少3步。而把奇数变成偶数需要1步。再变成1需要两步。所以对于所有奇数采用这种方式就行了。AC代码:#include <bits/stdc++.h>原创 2021-01-26 11:30:55 · 280 阅读 · 0 评论 -
Codeforces Round #683 (Div. 2, by Meet IT)
A. Add Candies题意:一个数组a[i] = i。可以有1000以内的操作。第j次操作可以选择 一个i,然后除了a[i],其他全部加上 j。求操作序列。思路:每次除了选择的数,都会加上j。但是他们本身a[i] = i。那么操作n次。第i次就选择a[i]。这样等于其他数都加上他。而他自己不变。这样操作完,所有数都加上了另外 n-1 个数。所有的数都是 sum(1~n)。AC代码:#include <iostream>#include <bits/stdc++.h>原创 2021-01-26 10:59:51 · 161 阅读 · 0 评论 -
Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3)
A. In-game Chat题意: 给定一个字符串,如果末尾 的’)'字符 大于剩下的字符的个数。则 yes 反之 no思路:大水题。AC代码:#include <bits/stdc++.h>#define int long long#define eps 1e-9using namespace std; signed main(){ int t = 1; cin>>t; while(t--){ string s;原创 2021-01-25 11:53:51 · 352 阅读 · 0 评论 -
Educational Codeforces Round 99 (Rated for Div. 2)
A. Strange Functions题意:定义f()函数为把放进去的数倒置,并去掉前导零。g(x)=xf(f(x))g(x)=\frac{x}{f(f(x))}g(x)=f(f(x))x,给定n。在所有 1<= x <= n中,能使得g(x)取得几个不同的值。思路:f(x)套了两层,先倒置去掉了前导零,又倒置去掉了前导零。其实就是倒回来了。然后用x去除它。假设x后面没有0。那么g(x)就是1。如果有一个0,那就是10。以此类推。所以答案就是n的位数。想必找规律也能看出来。AC代码:原创 2021-01-25 11:20:00 · 205 阅读 · 0 评论 -
Educational Codeforces Round 98 (Rated for Div. 2)
A. Robot Program题意:机器人要从(0,0)走到(x,y),可以上下左右,或者停在原地。五种操作。 不能连续使用同一种操作。思路:先最快走到(min(x,y),min(x,y))的地方。然后 停走停走就行了。AC代码:#include <iostream>#include <bits/stdc++.h>#define int long long#define mk make_pair#define gcd __gcdusing namespace st原创 2021-01-25 10:40:02 · 139 阅读 · 0 评论 -
Codeforces1474D. Cleaning(前缀和/思维)
D. Cleaning题意:一个数组。每次可以选择两个相邻的数,同时减小1。而且允许交换两个数,最多操作一次。问是否能最后全变成0。思路:前后缀和。第一个数,肯定是和第二个数一起减。并且减到0的。同理第二个数还要和第三个数一起减。那么从左往右这样可以一直减下去。就变成了一个,a1,a2-a1,a3-a2+a1…这样的数组。存起来作为前缀和pre[],如果pre[n] == 0 则说明,减到最后大家都是0了。已经满足题意了,可以提前结束。同理,从右往左也这样进行一次。存起来作为后缀和suf[]。要保证数组原创 2021-01-22 02:30:57 · 438 阅读 · 0 评论 -
Codeforces1461E. Water Level(贪心/分类讨论/模拟)
Codeforces Round #689 (Div. 2) 全文见:https://blog.youkuaiyun.com/qq_43461168/article/details/112976212E. Water Level题意:一桶水。初始k升,每天要喝掉x升,每天可以给他加y升。问能否使得 水位在t天之内 始终保持在 [L-R]的范围内。思路:分类讨论。贪心。首先特判掉第一天。如果第一天可以加水,那先加个水再说。然后 如果第一天 一喝就小于 L 了,那显然没救了。否则就分情况讨论。如果y < x,原创 2021-01-22 02:13:18 · 247 阅读 · 0 评论 -
Codeforces Round #689 (Div. 2, based on Zed Code Competition)
A. String Generation题意:造一个字符串,只用’a’,‘b’,'c’三个字符。要求其中不存在大于k的回文子串。思路:水题。直接循环输出abcabcabc就好了。显然没有回文。AC代码:#include <iostream>#include <bits/stdc++.h>#define int long long#define mk make_pair#define gcd __gcdusing namespace std;const double原创 2021-01-22 02:10:30 · 266 阅读 · 0 评论 -
Codeforces Round #651 (Div. 2) - E. Binary Subsequence Rotation(贪心)
Codeforces Round #651 (Div. 2) 全文见:https://blog.youkuaiyun.com/qq_43461168/article/details/112577099E. Binary Subsequence Rotation题意:给定一个01串,要变成目标串。可以选择任意一个子序列。然后顺时针移动一次。也就是最前面的到最后面,其实的移动到前一个元素的位置。问需要多少次。思路:考虑贪心。首先,如果两个位置相等,那自然不用判断了。其次,选110或者001,这种也是非最优的选择,因为原创 2021-01-20 23:13:48 · 164 阅读 · 0 评论 -
Codeforces Round #636 (Div. 3) - E. Weights Distributing(BFS,贪心)
Codeforces Round #636 (Div. 3) 全文见:https://editor.youkuaiyun.com/md/?articleId=112727618E. Weights Distributing题意:给定一个无向图。给定一个权值数组。要把权值分配到每条边上,使得从a到b再到c经过的总边权和最小。思路:显然,把最小的权值分配到最短路径上就是最优解。考虑一个朴素的想法。就是先求a-b的最短路径。然后把小权值分配上去。再求b-a的最短路径,把剩下最小的边权分配上去。但是这样肯定是不对的。如下原创 2021-01-20 16:00:31 · 140 阅读 · 0 评论 -
Codeforces Round #696 (Div. 2)
A. Puzzle From the Future题意:给定一个01串a。然后要再找一个同长度的01串b。然后把这两个串加起来,得到串d。如0110 + 1101 = 1211,然后相同的数字会合并成一个数。1211 -> 121。求出这个串b。使得串d最大。思路:贪心。首先能+1的位置肯定先加1。那么考虑什么情况下,+1会使得串d变小。那就是 a[i]+b[i] 等于上一位的数。那么这位数就等于浪费了。第一位肯定是+1的。然后用pre上一位。遍历到 i 的时候,如果+1 会使得和前一位相同,那么原创 2021-01-20 01:50:56 · 330 阅读 · 0 评论 -
Codeforces Round #684 (Div. 2)
A. Buy the String题意:01串,买一个0代价c0,买一个1代价c1。可以改变01的值,代价为h。求最小代价。思路:贪心。如果0变成1再买更便宜就先变成1再买。 1同理。AC代码:#include <bits/stdc++.h>#define int long longusing namespace std;const int N = 4e5 + 10;const int mod = 1e9+7;const int inf = 1e18;int t,n,m,k;原创 2021-01-18 12:13:56 · 213 阅读 · 0 评论 -
Codeforces Round #688 (Div. 2)
A. Cancel the Trains题意:竖着的有好多车站,可能有火车。横着的也是一样。现在告诉你横着的哪些有火车,竖着的哪些点有火车出发。火车出发时间相同,速度相同。底下的火车只能往上走。左边的只能往右。可能有的火车会发生碰撞。问最小取消掉多少火车,就不会发生碰撞了。思路:题目看着一大坨,其实就是判断两个数组有多少个相同元素。暴力。AC代码:#include <bits/stdc++.h>#define int long longusing namespace std;c原创 2021-01-17 18:12:03 · 242 阅读 · 0 评论 -
Codeforces Round #676 (Div. 2)
A. XORwice题意:给两个数,找出一个x,使得(a⊕x) + (b⊕x) 最小。⊕表示异或。思路:分解成二进制,如果相同位上的数相同,那么这个位异或之后两个都可以为0,那么就没有贡献了。相反如果不相等,那么不论x怎么取,这个位都没办法消除。所以要加上。AC代码:#include <bits/stdc++.h>#define int long longusing namespace std;const int N = 4e5 + 10;//const int N = 1e6原创 2021-01-17 12:24:41 · 141 阅读 · 0 评论 -
Codeforces Round #682 (Div. 2)
A. Specific Tastes of Andre题意:给一个n,要求构造一个数组,需要让数组每个子串的和都能整除子串的长度。思路:显然。只要让所有数都一样不就完了吗。子串和 = 子串长度*x,x任取。AC代码:#include <bits/stdc++.h>#define int long longusing namespace std;const int N = 1e6+7;const int mod = 1e9+7;int t,n,m,k;int a[N];si原创 2021-01-16 13:18:37 · 343 阅读 · 0 评论 -
Educational Codeforces Round 102 (Rated for Div. 2)
A. Replacing Elements题意:一个数组,可以用两个不同的元素替换掉另外一个元素,不限次数。问,能否使得数组中所有元素都不大于 d 。思路:显然,如果所有元素都不大于d,那就执行0次。成立。如果有元素大于d,那就得替换掉,显然选择最小的两个元素进行替换。所以如果最小的两个元素加起来大于d那就没戏了。反之有解。AC代码:#include <bits/stdc++.h>#define int long longusing namespace std;const int原创 2021-01-15 01:46:21 · 2574 阅读 · 7 评论 -
Codeforces Round #673 (Div. 2)
A. Copy-paste题意:一个数组,可以选择任意一个值加上另外一个值,当数组中有数大于k时停止。问,最多总共能操作多少次。思路:大水题,排序,选最小的一直加就好了AC代码:#include <bits/stdc++.h>using namespace std;const int N = 1e6+7;int n,k;int a[N]; int main(){ int t; cin>>t; while(t--){ ci原创 2021-01-14 19:07:50 · 194 阅读 · 0 评论 -
Codeforces Round #695 (Div. 2)
A. Wizard of Orz题意:一排灯,会显示数字,0-9,到9之后又变成0,n个灯同时变化,现在可以在任意位置暂停,当前位置数字立即停止变化,但是下一秒,左右两边的灯也会停止变化,再下一秒再边上一格的灯也停止变化。求停止变化后,显示的最大的数字。思路:1个灯的话,答案就是9,2个灯的话答案是98,3个以上的灯就是989012334567890123……,真是在位置2按暂停键。如果在其他位置,那么最大值只可能是 987…所以 989开头就是最优的了。AC代码:#include <bits原创 2021-01-14 01:16:19 · 146 阅读 · 0 评论 -
Codeforces Round #651 (Div. 2)
A. Maximum GCD题意:给定一个n,在1-n中任选两个数,求最大的gcd思路:显然要让gcd最大,就是要让能约掉的因子最小。所以答案就是n/2,因为gcd(n/2,n/2*2)必然是最大的。AC代码:#include <bits/stdc++.h>#define int long longconst int N = 4e5+10;const int mod = 1e9+7;using namespace std;int n,m;string s,ss;int a[原创 2021-01-13 18:53:44 · 247 阅读 · 0 评论 -
Educational Codeforces Round 100 (Rated for Div. 2)
A. Dungeon题意:三只小怪兽,分别有a,b,c点血量。普攻一次只能攻击一只怪兽,并且扣1点血。但是第7,14,21,……,7k 次,有普攻强化,会对三只怪兽同时扣除1点血。求是否能够保证,最后一次强化普攻,可以同时把三只怪打死。思路:首先每打到一次强化普攻,就总共造成了 6+3 也就是9滴血。所以a+b+c 要是9的倍数。其次,血量最低的怪兽,要至少能够抗住强化普攻的扣血,也就是min(a,b,c) >= (a+b+c)/9 。AC代码:#include <bits/stdc++原创 2021-01-13 01:01:44 · 435 阅读 · 0 评论