
CodeForces
爱睡觉的Raki
我不能只做观众
展开
-
Simple record Part2.3
CF1276B Two FairsCF1105D Kilani and the GameCF1095F Make It ConnectedCF1012B Chemical tableCF14D Two PathsCF500D New Year Santa Network1.CF1276B Two Fairs#include<bits/stdc++.h>#define int long longusing namespace std;constexpr int maxn=2.原创 2020-12-26 16:48:08 · 154 阅读 · 1 评论 -
Simple record Part2.2
CF25D Roads not only in BerlandCF1205B Shortest CycleCF1242B 0-1 MSTCF1307D Cow and FieldsCF1228D Complete Tripartite1.CF25D Roads not only in BerlandMain idea:find all the loops and break it,connet all the components.Thinking of problem solving:D.原创 2020-12-15 21:37:09 · 253 阅读 · 0 评论 -
简单记录 Part1.3
CF1242B 0-1 MST1.CF1242B 0-1 MST求补图中联通块个数先找到原图中度数最小的点,该点在补图中度数最大,标记原图中与其相连的所有点,补图中所有的点都与其相连暴力遍历每个点,若已经与度最小的点相连或者为该点则跳过,标记与该点相连的所有点,与未标记的所有点相连边数最多只有10510^5105条,复杂度并不会很大#include<bits/stdc++.h>#define int long longusing namespace std;constexp.原创 2020-12-10 21:56:25 · 132 阅读 · 0 评论 -
简单记录 Part1.2
CF700B Connecting UniversitiesCF1081D Maximum DistanceCF263D Cycle in GraphCF645D Robot Rapping Results ReportCF1067B MultihedgehogCF67A Partial Teacher789101.CF700B Connecting Universities记录每条边会被多少个大学走过#include<bits/stdc++.h>#define i.原创 2020-12-08 20:01:50 · 222 阅读 · 0 评论 -
简单记录 Part1.1
1.CF1328D Carousel分类讨论:1:为偶数,输出12121212…2:为奇数,但是有两个连续的图形相同,从此位置断开输出121212…且没有任何相邻的图形相同,输出121212…3#include<bits/stdc++.h>#define int long longusing namespace std;constexpr int maxn=4e5+5,inf=0x3f3f3f3f,mod=1e9+7;int n,m,t,a[maxn],res[maxn];原创 2020-12-05 18:00:17 · 885 阅读 · 0 评论 -
最短路径树简谈
在最开始,我们要知道最短路径树是个什么东西,不同于最小生成树,最短路径树是选一个节点为根,得到一颗树上的所有点,与原图中根节点到其的最短距离相等。因为很多要用到边的记录,然而我比较菜只会用链式前向星方便的记录边,所以在写最短路路径树的过程中全用的链式前向星存图(先来个比较板子的CF545E Paths and Trees题意:给定一张带正权的无向图和一个源点,求边权和最小的最短路径树。思路:在跑dij的过程中记录每个点的前驱边,因为题目要求边权和最小,所以如果遇到相同的最短距离,我们应该选取前驱边原创 2020-12-05 17:05:04 · 504 阅读 · 0 评论 -
Ten graph questions of about 2000 difficulty of Codeforces Round 1
1.CF1187E Tree Painting题目:给定一棵n个点的树 初始全是白点要求你做n步操作,每一次选定一个与一个黑点相隔一条边的白点,将它染成黑点,然后获得该白点被染色前所在的白色联通块大小的权值。第一次操作可以任意选点。求可获得的最大权值思路:显然换根dpson[i]son[i]son[i]表示第iii个点这棵树的大小,f[i]f[i]f[i]代表以iii点为根子树的答案每个点获得的价值= son[i]son[i]son[i]+所有子树的fff开始换根f[1]=son[1原创 2020-09-28 19:45:30 · 229 阅读 · 1 评论 -
Ten graph questions of about 2000 difficulty of Codeforces Round 2
1.CF702E Analysis of Pathes in Functional Graph题意:有一个 nnn 个点 nnn 条边的带权有向图(点编号000 ~n−1n-1n−1),每个点有且仅有一条出边,对于每个点iii求出由iii出发经过kkk条边,这kkk条边的权值最小值和权值和。思路:倍增由于k太巨大,硬跑是肯定不行的,然后每个点有且仅有一条出边,所以可以用倍增(预处理的方式跟ST表差不多#include<bits/stdc++.h>#define int long lo原创 2020-09-28 19:44:08 · 140 阅读 · 0 评论 -
Codeforce 1900Difficulty Graphs 20 questions
开坑原创 2020-09-28 19:43:38 · 198 阅读 · 0 评论 -
Codeforce 1800Difficulty Graphs 20 questions
1.CF1324F Maximum White Subtree给定一棵 nnn 个节点无根树,每个节点 uuu 有一个颜色 aua_uau,若 aua_uau 为 000 则 uuu 是黑点,若 aua_uau 为 111 则 uuu 是白点。对于每个节点 uuu,选出一个包含 uuu 的连通子图,设子图中白点个数为 cnt1cnt_1cnt1,黑点个数为 cnt2cnt_2cnt2,请最大化 cnt1−cnt2cnt_1 - cnt_2cnt1−cnt2。并输出这个值。1≤n≤2×1原创 2020-09-28 19:42:45 · 255 阅读 · 0 评论 -
Codeforce 1700Difficulty Graphs 20 questions
1.CF427C Checkposts题意:建立一些站点,如果有一个检查站在i路口,保护j的条件是:i==j或者警察巡逻车可以从i走到j,并且能回到i。求最小花费和用最少点的方案数显然是强连通分量在跑tarjan的过程中记录每个强连通分量中cost的最小值,在输出时遍历累乘即可要开longlong,wa了两发#include<bits/stdc++.h>#define int long longusing namespace std;constexpr int maxn=3e5+原创 2020-09-28 19:42:06 · 252 阅读 · 0 评论 -
Codeforce 1600Difficulty Graphs 20 questions
1.CF601A The Two Routes一个图有两种路,有这种路就没有那种路,求走两种路达到终点的时间原图和补图跑Floyd判断联通即可#include<bits/stdc++.h>using namespace std;int n,m;const int maxn=405,inf=0x3f3f3f3f;int dis1[maxn][maxn],dis2[maxn][maxn];int main(){ memset(dis1,inf,sizeof dis1); mems原创 2020-09-28 19:41:29 · 205 阅读 · 0 评论 -
2020-8-6 Codeforces摸鱼报告
1.CF1366C Palindromic Paths经过观察发现从起点出发走nnn步到达的点是一个固定的集合遍历其中每一个集合,把该集合和从终点出发同步数的集合,取需要0变1 or 1变0的最小值#include<bits/stdc++.h>using namespace std;int tt,n,m;int a[35][35];int main(){ cin>>tt; while(tt--){ cin>>n>>m; unorder原创 2020-08-06 22:44:05 · 396 阅读 · 0 评论 -
2020-8-5 Codeforces摸鱼报告
1.CF1371D Grid-00100贪心的平均分到每一行的总和借用大佬的图片#include<bits/stdc++.h>using namespace std;int tt,n,m,k;int a[305][305];int main(){ cin>>tt; while(tt--){ memset(a,0,sizeof a); cin>>n>>k; if(k%n==0)printf("0\n"); else print原创 2020-08-05 23:04:20 · 328 阅读 · 0 评论 -
2020-8-4 Codeforces摸鱼报告
1.CF1379B Dubious Cyrpto枚举a,分两种情况讨论当 n∗a<mn*a<mn∗a<m,若m−n∗am-n*am−n∗a在l到rl到rl到r之间,直接输出rrr和r−resr-resr−res当 n∗a>mn*a>mn∗a>m, 若i−resi-resi−res在l到rl到rl到r之间,直接输出rrr和r−i+resr-i+resr−i+res#include<bits/stdc++.h>#define int long lon原创 2020-08-04 22:47:42 · 238 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3)
Codeforces Round #656 (Div. 3)A.Three Pairwise Maximums观察可以发现构造出来的数必定有两个数为三个数里的最大数,先特判再分别输出两个不同的数字和0即可#include<bits/stdc++.h>using namespace std;int n,m,t,k;int a[5];void shit();int main(){ cin>>t; while(t--){ cin>>a[1]>&g原创 2020-07-31 19:14:12 · 171 阅读 · 0 评论 -
Educational Codeforces Round 92 (Rated for Div. 2)
Educational Codeforces Round 92 (Rated for Div. 2)A.LCM Problem#include<bits/stdc++.h>using namespace std;int t,n,m;int main(){ cin>>t; while(t--){ cin>>n>>m; if(n*2<=m){ printf("%d %d\n",n,n*2); } else printf(原创 2020-07-30 23:00:50 · 293 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2)
链接:Codeforces Round #658 (Div. 2)A.Common Subsequence判断两序列是否有相同元素即可#include<bits/stdc++.h>using namespace std;int t,n,m;int a[1005],b[1005];unordered_map<int,int>mp;int main(){ cin>>t; while(t--){ cin>>n>>m; int原创 2020-07-29 22:05:55 · 243 阅读 · 0 评论 -
刷题记录 CF每日一题打卡 2020.5月?-六月16
CF1355D Game With ArrayCF1352D Alice, Bob and CandiesCF1352F Binary String ReconstructionCF1352E Special ElementsCF1364C Ehab and Prefix MEXsCF1361A Johnny and ContributionCF1365D Solve The Maze1.CF1355D Game With Array给出两个数NNN,SSS问是否可以找到一个序列和一个.原创 2020-07-02 22:10:55 · 477 阅读 · 0 评论 -
刷题记录 CF每日一题打卡 2020.5月26-6月2
CF1198A MP3CF486C Palindrome TransformationCF467C George and JobCF1228C Primes and MultiplicationCF1279C Stack of PresentsCF1238C Standard Free2playCF1223C Save the Nature1.CF1198A MP3题意有点绕总需要的存储空间为n∗log2tn*\log_{2} tn∗log2t,ttt为不同音量的数量现有的存储空.原创 2020-07-02 21:31:21 · 317 阅读 · 0 评论 -
刷题记录 CF每日一题打卡 2020.6月7-6月13
1.CF1263D Secret Passwords并查集,每个字符串跟它的首字母连边,最终输出联通块数量#include<bits/stdc++.h>using namespace std;int t,n,m;int vis[200005];string a[200005];int f[200005];int find(int x){ if(x==f[x])return x; return f[x]=find(f[x]);}void hb(int x,int y){原创 2020-06-13 21:47:35 · 473 阅读 · 1 评论