![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CodeForces
文章平均质量分 60
CF比赛题
xzx9
没事写BUG。
展开
-
CF1514-D. Cut and Stick【莫队/主席树/线段树/随机数】
题意给出一个序列 aaa,长度为 n(1≤n≤3⋅105)n(1\leq n \leq 3· 10^5)n(1≤n≤3⋅105)。给出 q(1≤n≤3⋅105)q(1\leq n \leq 3· 10^5)q(1≤n≤3⋅105) 个询问,每次选择一个区间 [l,r][l,r][l,r] ,问最少要将该区间拆分为几个子序列,使得每个序列中出现次数最多的数出现的次数不大于⌈len2⌉\lceil \frac{len}{2}\rceil⌈2len⌉,其中 lenlenlen 为序列长度。分析假设序列长度原创 2021-04-21 21:52:49 · 169 阅读 · 0 评论 -
CF1514-C.Product 1 Modulo N
题意给出一个 nnn (2≤n≤1052\leq n \leq 10^52≤n≤105),在 [1,n−1][1,n-1][1,n−1] 内求出一个最长的子序列,使得该序列的乘积模 nnn 等于 111。求出序列的最长长度以及序列的各个数是多少。分析首先有如下等式成立:∏gcd(x,n)=1,x<nx=±1mod n\prod_{gcd(x,n)=1,x<n}{x}=\pm1 \mod ngcd(x,n)=1,x<n∏x=±1modn根据该等式,如果乘积 ppp 取模 n原创 2021-04-21 10:47:41 · 116 阅读 · 0 评论 -
CF1506 D. Epic Transformation【模拟+思维】
题意给出长度为 nnn 的数组,每次可以选择两个不同的数从数组中去掉,问数组中最后最少可以剩余多少个数。(1≤n≤2⋅105,1≤ai≤109)(1\leq n \leq 2·10^5,1\leq a_i \leq 10^9)(1≤n≤2⋅105,1≤ai≤109)分析每次选择出现次数最多的两个数去掉,一直重复,直到不能消除。用优先队列模拟即可。代码#include <bits/stdc++.h>using namespace std;typedef pair<int,i原创 2021-03-29 19:54:04 · 175 阅读 · 0 评论 -
CF1484 C. Basic Diplomacy【贪心/网络流】
题目链接题意某人有 nnn 个朋友,在 mmm 天中,每天会有 kkk 个朋友有空,问是否存在一种方案收到每个朋友出现的次数不大于 ⌈m2⌉\lceil\frac{m}{2}\rceil⌈2m⌉,存在则输出YES和每天选择的朋友编号,否则输出 NO。(1≤n,m≤105)(1≤n,m≤10^5)(1≤n,m≤105)分析题目的目的是让每个人出现的天数尽可能少,那么可以先处理掉那些只有一个人的时间,然后,按照贪心,每次选择出现次数最少的人。代码#include <bits/stdc++.h原创 2021-03-23 20:58:02 · 165 阅读 · 1 评论 -
Codeforce 1311F - Moving Points【树状数组或pbds】
题意: 给出 xxx 坐标轴上的 nnn 个点,各点坐标为:xix_ixi(保证所有的 xix_ixi 不相等),同时每个点有一个速度 viv_ivi,因此 ttt 时刻,点 xix_ixi 的位置可以表示为 xi+t∗vix_i+t*v_ixi+t∗vi。d(i,j)d(i,j)d(i,j) 表示点 iii 和点 jjj 在运动过程中的相距距离的最小值。求 ∑1≤i<j≤...原创 2020-02-25 16:52:50 · 186 阅读 · 0 评论 -
Codeforce 1311D - Three Integers【枚举】
题意:给出三个数 :a,b,c,(a≤b≤c)a,b,c,(a\leq b \leq c)a,b,c,(a≤b≤c) ,可以对任意一个数进行任意次 +1+1+1 或 −1-1−1 的操作。要求操作之后得到的数 A,B,CA,B,CA,B,C,满足:均为正数, A≤B≤CA\leq B\leq CA≤B≤C,AAA可以整除 BBB,BBB可以整除 CCC。思路:枚举。先确定 AAA 的范围,...原创 2020-02-25 15:15:32 · 153 阅读 · 0 评论 -
Codeforces 1313C2 - Skyscrapers【思维】
题意:要求在一条直线上建 nnn 栋楼,并且要满足下列要求:1.每栋楼的层数不能超过其楼层限制 m[i]m[i]m[i];2.对于第 i,j,ki,j,ki,j,k 栋,如果满足: i<j<ki<j<ki<j<k,那么其层数要满足:aj>ai<aka_j>a_i<a_kaj>ai<ak,其中 j,kj ,kj,k ...原创 2020-02-24 11:28:46 · 244 阅读 · 0 评论 -
Codeforces 1307D - Cow and Fields【最短路+思维转换】
题目: 给出一个 nnn 个点,mmm 条边的无向连通图,其中有 kkk 个特殊的点。选择连接这 kkk 个点中的两个,使得从 111 号点到 nnn 号的最短距离最大化,并求出该最短距离。思路: 先考虑暴力的做法,用两次 bfsbfsbfs 求出 111 号点和 nnn 号点到各个点的距离,分别用 x[i]x[i]x[i] 和 y[i]y[i]y[i] 表示。然后暴力枚举这 kkk 个...原创 2020-02-23 22:33:09 · 123 阅读 · 0 评论 -
Codeforces1307C - Cow and Message【思维】
题目:给出一个字符串 sss ,要求求出其下标为等差数列的出现次数最多的子序列的出现次数。(1≤∣s∣≤105)(1≤|s|≤10^5)(1≤∣s∣≤105)思路:因为要求下标是等差数列,所以只需要考虑长度为 111 或 222 的子序列即可。对于长度为1 的子序列,用一个一维计数即可。对于长度为2的子序列,用一个二维数组计数。复杂度:O(26∗∣S∣)O(26*|S|)O(26∗∣...原创 2020-02-23 16:24:27 · 151 阅读 · 0 评论 -
CodeForce 1304E 1-Trees and Queries【LCA】
题意: 首先给一棵 nnn 个点的树,然后有 qqq 次的询问,每次询问会向树上点 xxx 和 yyy 之间增加一条边(保证增加的边之前不存在),然后问点 aaa 和 bbb 之间是否存在一条路径长度为 kkk 的路径。每次询问相互独立,即每次增加的边在下一次的询问中不存在。数据范围:3≤n≤105,1≤q≤105,1≤x,y,a,b≤n,x≠y,1≤k≤1093≤ n ≤10^5,1≤q...原创 2020-02-16 14:54:01 · 147 阅读 · 0 评论 -
CodeForce1299A-Anu Has a Function【位运算+前后缀】
定义函数:f(x,y)=(x∣y)−yf(x,y)=(x|y)-yf(x,y)=(x∣y)−y 给出数组 aaa,要求求出使得 f(f(…f(f(a1,a2),a3),…an−1),an)f(f(…f(f(a_1,a_2),a_3),…a_{n−1}),a_n)f(f(…f(f(a1,a2),a3),…an−1),an)的值最大d的数组 aaa 的排列。 仔细观察函数定义,可以发...原创 2020-02-13 12:32:52 · 181 阅读 · 0 评论 -
codeforce 1290A-Mind Control【思维】
题意: 一串数共nnn个,排成一列,有 nnn个人对数进行操作,每次去数列的第一个或最后一个。现在你的位置是第mmm个,并且你可以控制任意 kkk 个人的选择。问你所能取到的最大的数的最小值是多少?关键还是在于思考的角度! 由于有些人是不能控制的,所以他们的选择的所有情况都要考虑。 如果 k>=m−1k>=m-1k>=m−1 ,那么最终结果是可以控制的。否则,就要...原创 2020-02-03 14:45:35 · 301 阅读 · 0 评论 -
codeforce 1294F-Three Paths on a Tree【树的直径+多源bfs】
一开始认为根节点和深度最深的节点一定要选择(其实是错的),确定了两个点后枚举第三个点,用倍增求深度最深的点和枚举的点的lca,确定第三个点。正解: 用两次 dfsdfsdfs 求出树的直径的两个端点,即可求得两个点。如果直径长度=n−1=n-1=n−1,那么第三个点可以任意选择。如果不是,用多源 bfsbfsbfs 求出离直径最远的点即为第三个点。#include <bits/s...原创 2020-02-02 19:22:49 · 123 阅读 · 0 评论 -
Numbers on Tree
D. Numbers on Treetime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputEvlampiy was gifted a rooted tree. The vertices of the tree are numbered...原创 2020-01-15 17:32:38 · 171 阅读 · 0 评论 -
CodeForce 1286A-Garland
收藏题解题目链接原创 2020-01-14 20:53:03 · 235 阅读 · 0 评论 -
CodeForce 1272 E. Nearest Opposite Parity【多源bfs+反向建图】
#include <bits/stdc++.h>using namespace std;const int inf=0x3f3f3f3f;const int N=2e5+5;vector<int>path[N];int a[N],ans[N],d[N];int n;queue<int>que;void bfs(vector<int> ...原创 2020-01-10 17:07:18 · 181 阅读 · 0 评论 -
CodeForce1270E-Divide Points【构造】
题目大意:给n个点,要求把所有的点分成两部分。划分的依据是:对于所有的距离值,只能属于集合内部,或两个集合之间,而不能都满足。一开始想要的是并查集处理,但发现有些情况还是没有办法处理,因为他是对边讨论的。题解提供的方法很巧妙,并没有直接求距离来讨论,而是通过距离平方的奇偶性来判断。对于所提供的点,其坐标可以分为4个集合:num[0][0]:x为偶,y为偶num[0][1]:x为偶,y为...原创 2020-01-10 11:30:12 · 139 阅读 · 0 评论 -
Hello 2020【总结】
A. New Year and Naming分别取模。#include <bits/stdc++.h>using namespace std;char ss[25][20],tt[25][20];int main(){ int n,m,q,k; while(scanf("%d%d",&n,&m)!=EOF) { for...原创 2020-01-09 17:02:56 · 117 阅读 · 0 评论 -
Shichikuji and Power Grid CodeForces - 1245D【最小生成树-点权变边权-超级源点】
没有做过这种题目,所以当时就没有做出来,其实即使建立一个超级源点,和每个点相连,以建发电站的费用为边权,其他的点之间的边权就按题目给的算。然后跑一遍最小生成树即可,我用的是prim。注意数据范围(>_<),因为这个一直WA。#include <bits/stdc++.h>//注意数据范围long longusing namespace std;const int N=...原创 2019-12-30 15:12:57 · 134 阅读 · 0 评论 -
Good Bye 2019【自闭总结】
A. Card Game看最大值是否在the first player 的牌里面。#include <bits/stdc++.h>using namespace std;int main(){ int t,n,k1,k2; scanf("%d",&t); while(t--) { scanf("%d%d%d",...原创 2019-12-30 12:02:18 · 221 阅读 · 0 评论 -
Codeforces Round #599 (Div. 2) ---C. Tile Painting+D. 0-1 MST(补图的连通图的个数)
C:当n=p^k时,可知答案为k.当n=p*q时,对于x=i (mod p)x=j (mod q)根据CRT,在n以内方程组一定有解,那么可知,此时所有i,j的颜色都相同。D:刚开始看题,没有一点思路,直到看了一眼题解后,马上就明白了。由于边权的特性,所以要想求出MST的权值,只要尽可能的多用0的边即可。而题目给了1的边,那么只要求出补图中的连通块的个数即可,然后用1的边连接即可。所...原创 2019-11-12 21:29:25 · 152 阅读 · 0 评论