codeforces
selia1078
这个作者很懒,什么都没留下…
展开
-
CF 1475—Codeforces Round #697 Div. 3
Codeforces Round #697 Div. 3 ABCDEFGA判断一个数有没有奇数因子。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long LL;int main(){ in原创 2021-01-29 11:16:44 · 153 阅读 · 0 评论 -
CF 652E
CF652EE题意题解代码E题意给一张无向图,某些路径上有货物。给定起止点,询问是否存在一条从起点到中点的简单路径,路上有至少一个货物。题解求强连通分量,缩点,图缩成树。看树上路径是否经过货物。要注意缩成的点内部是否有货物。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<c原创 2021-01-18 19:45:56 · 142 阅读 · 0 评论 -
Codeforces: Educational Codeforces Round 98 (Rated for Div. 2)
EDU98A#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int main(){ int T, n, m; scanf("%d", &T); while(T) { T--; scanf("%d%d"原创 2020-11-26 21:24:01 · 114 阅读 · 0 评论 -
CF1439 Codeforces Round #684 (Div. 1)
CF 1439 Codeforces Round #684 (Div. 1)A1题意一个0 / 1二维矩阵,每次操作可以选一个四宫格,并将其中三个数取反,找到在3nm步骤内将矩阵变成全0矩阵的方法。思路如果执行上图中的三个操作,四宫格内只有一个位置被操作了奇数次,其他位置都被操作了偶数次,因而相当于没有改变。因此,只需对每一个为1的位置都进行类似的操作就可以了。A2题意一个0 / 1二维矩阵,每次操作可以选一个四宫格,并将其中三个数取反,找到在nm步骤内将矩阵变成全0矩阵的方法。思路原创 2020-11-18 16:39:05 · 233 阅读 · 0 评论 -
CF 1437 Educational Codeforces Round 97
CF 1437E. Make It Increasing题意给一个数组,固定某些位置不可动,改变可动位置,使得数组严格单调递增,求最少改变位置数。思路考虑没有固定位置时,令bi=ai−ib_{i}= a_{i} - ibi=ai−i,若bib_{i}bi单调不增,则aia_{i}ai严格单调递增。求单调不减子序列,答案即是总长度减最大单调不减子序列长度。当有固定位置时,将数组划分成若干段,对于每一段而言,首尾是固定的。那么强制首位必选,求单调不减子序列,找到一个值小于末尾位置的位置po原创 2020-11-07 23:54:11 · 84 阅读 · 0 评论 -
CF 1383/1384
Codeforces Round #659 (Div. 1)C String Transformation 2题意:将串A变换成串B。每次操作可以选一些字符相同的位置,将这些位置统一修改成某一字符y。求将串A变换成串B最少操作次数。思路:在AiA_{i}Ai与BiB_{i}Bi间建一条有向边,构成一个图G。任务转化成建一个图F,使得G中每一条边连接的两点在F中都是随时间递增可达的,并使得F中的边尽可能少。由于每个连通块独立,所以可以分开计算。对于一个连通块,导出DAG图最大为m,则答案为2n.原创 2020-09-12 11:10:20 · 347 阅读 · 0 评论 -
CF Edu 92
Educational Codeforces Round 92 (Rated for Div. 2)F. Bicolored Segments题意:n条线段,每条线段起点为lil_{i}li,终点为rir_{i}ri,颜色为tit_{i}ti,tit_{i}ti为0或1。颜色不同的线段不能相交。求最多可以选择多少线段。思路:线段树优化DP枚举末尾位置i,颜色为opt,假设上一个与i的颜色不同的位置为j。设f[opt][i]为末尾节点为i,颜色为opt时可以选择的最多线段数。f[opt][i]原创 2020-09-12 10:25:46 · 117 阅读 · 0 评论 -
CF 1391
Codeforces Round #663 (Div. 2)E Pairs of Pairs题意:给一个联通图,求以下两种答案任意一种:求一条长度至少为⌈n2\frac{n}{2}2n⌉的路径。求至少⌈n2\frac{n}{2}2n⌉个点,这些点两两构成一对,每两对点构成的集合中最多只有两条边。思路:建图的dfs树,如果树深大于⌈n2\frac{n}{2}2n⌉,输出路径。否则,将树分层,深度相同的节点之间配对,这样可以保证任意两对节点构成的集合中有不超过2条边;同时,由于每一层最多会有.原创 2020-09-12 09:40:43 · 97 阅读 · 0 评论 -
CF EDU 93
F题意:给一个长度为n的由0、1、?构成的串,进行n次游戏。每次游戏需要找出串中有多少组连续的0或者连续的1,其中?既可以看成0,也可以看成1。注意,在每一次游戏时,每个字符只能被统计一次,不能重复出现在不同的组中。思路:在每一次游戏中,如果我们能够快速找到下一个含有连续0/1串的位置,就可以在nlogn的时间内统计出答案。维护nxt[0/1][i]nxt[0/1][i]nxt[0/1][i]数组表示下一个0/1到当前位置的距离,维护vectorpos[0/1][len]pos[0/1][len]p原创 2020-09-12 09:25:08 · 92 阅读 · 0 评论 -
CF Edu 94
Educational Codeforces Round 94 (Rated for Div. 2)G题意:从n(n≤3e5n\leq3e5n≤3e5)个人中雇佣一些人组成队伍,雇佣第i个人的条件是:队伍中人数在[lil_{i}li,rir_{i}ri]中。有m(m≤20m\leq20m≤20)对人有仇,不能同时雇佣。思路:枚举人数,统计当前人数的雇佣方案。利用容斥原理除去不合法方案。统计总方案数:设人数为i时,有cnticnt_{i}cnti个人可以选,那么总共有CcntiiC_{cnt_原创 2020-09-12 09:03:28 · 105 阅读 · 0 评论 -
CF 1381/1382 Codeforces Round #658 (Div. 1/2)
Codeforces Round #658 (Div. 1)C Mastermind题意:一个序列,n个数,包含颜色的序号不超过n+1,求满足以下条件的序列是否存在。1. 包含的颜色序号不超过n + 12. 有x个位置和原序列完全一样3. 有y个位置包含原序列的颜色,但和原序列不一定一样。思路: 有一种颜色多余,我们称之为miscolor。 先看x个和原序列一样的位置,找数目最多的颜色。 指定好这x个元素以后,如果剩余的最大的颜色数*2> n-x + n-y,那么不可能构造成功原创 2020-09-09 15:44:38 · 294 阅读 · 0 评论 -
CF 1388 Codeforces Round #660 (Div. 2)
E题意:给n(n≤n\leqn≤ 2000)条水平线段,求一个方向向量,使得这些直线按照该方向向量向x轴做投影后,所有线段不相交,求这些线段所覆盖的位置的最左端的和最右端的距离最小。思路: 考虑两条线段AB、CD,只有AC、BD才可能成为答案。同时,斜率处于AC与BD之间的向量不能作为答案,否则会使AB、CD的投影相交。 所以,我们需要枚举出所有可能的答案,然后用区间覆盖的方式除去矛盾的线段,然后再比较哪一个向量求得的答案最小的答案。 对于一个已知向量,我们需要求出投影后最左端和最右端的点原创 2020-09-03 14:26:19 · 103 阅读 · 0 评论 -
CF 1393
CF Round #622A题意:n*n的网格,外框被激活。A/B两人轮流激活格子,激活一个格子的条件:四联通的位置有格子激活,四联通的位置没有同色的格子。思路:输出n/2+1即可#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>#define LL long lo原创 2020-08-16 14:46:27 · 158 阅读 · 0 评论 -
CF 1398
Educational Codeforces Round 93A签到题题意:给一个不下降序列,求是否存在三个数,不能组成三角形。思路:考虑a[1],a[2],a[n]即可。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>#define LL long long原创 2020-08-15 17:31:24 · 151 阅读 · 0 评论 -
CF 1379
Codeforces Round #657 (Div. 2)这场真的太难打了,对细节处理要求很高。A Acacius and String(1500的A题,第一次见)题意:给一个包含字母和‘?’的字符串,将’?'需要定为某一字母,问是否可以使得’abacaba’存在且只存在一次。思路:暴力判。字符串可能原先就有两个或以上’abacaba’如果只有一个,那么把’?'都填成’z’就好如果没有,试着去填出一个‘abacaba’,但是,注意填完之后整个串可能出现两个或以上’abacaba’。#原创 2020-07-30 23:45:11 · 221 阅读 · 0 评论 -
CF 1372
传送门A Omkar and Completion题意:构造序列,ax+ay!=az思路:全输出1int main(){ int T,n; scanf("%d",&T); while(T) { T--; scanf("%d",&n); for(int i=1;i<=n;i++) printf("1 "); printf("\n"); } return 0;}B Omkar and Last Class of Math题意:给定n,求a原创 2020-07-16 16:55:02 · 124 阅读 · 0 评论 -
CF 1380
传送门E Merging Towers题意:n个圆盘,堆成m堆,小的在上面。m-1次操作,每次选择两个堆a, b, 将b堆合并到a堆。每一次操作后输出当前状态下,如果想要合成一堆所需最少操作步数(合并的过程中始终保持小的盘子在大的盘子上面)。思路:最少操作步数即是统计有多少对相邻的数不在同一堆。可以转化成确定相邻的两个数字合并到一起的时间,然后累加到相应时间点上,求前缀和即可求出答案。发现合并的操作过程即是建树的过程,那么也就转化成求LCA的问题。#include<iostream>#原创 2020-07-16 13:21:10 · 159 阅读 · 0 评论 -
CF 1372
CF 1372Aint main(){ int T,n; scanf("%d",&T); while(T) { T--; scanf("%d",&n); for(int i=1;i<=n;i++) printf("1 "); printf("\n"); } return 0;}B#define LL long longusing namespace std;const int N=1e5+10; LL mn=1e5;int fla原创 2020-07-12 22:25:29 · 86 阅读 · 0 评论 -
CF 1355
CF1355A题意:给一个数A,取它的所有位中最小的(记为minA)和最大的(记为maxA),A = A + minA * maxA,如此往复K次,求所得到的值。题解:1000次以内必然出现minA * maxA = 0,然后就不变了。P.S. 附了一组数据,试试……#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm原创 2020-05-24 22:30:18 · 270 阅读 · 0 评论 -
CF639(1344,1345)
CF 1345Aif(n==1||m==1||(n==2&&m==2)) printf("YES\n"); else printf("NO\n");B二分int f[30010],cnt;int find(int x){ int l=0,r=cnt,mid; while(r-l>1) { mid=(l+r)>>1; i...原创 2020-05-07 23:40:43 · 342 阅读 · 0 评论 -
CF637(1341,1340)
div 2 DNastya and Scoreboard题意:用数码管显示数字。先给定n个数码管显示情况,问再点亮恰好k个二极管,可以显示的最大的数字。题解:(1)dist[i][j]表示每i个数码管,将其变成数字j所需点亮二极管的数量(2)dp[i][j]表示对于后i个数码管,点亮j个二极管,是否能组成一组数字(dp[i][j]=true or false)(3)枚举每一位数码管i,...原创 2020-04-28 21:56:24 · 418 阅读 · 0 评论