CF刷题
cf
_Shmily
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #631 (Div. 1) A. Dreamoon Likes Coloring(思维)
题目链接题面:题意:给定n个格子排在一排,初始时格子没有颜色。给定一个 m 和 m 个正整数 lil_ili,按照给定的顺序给格子进行染色,第 i 次可以将长度为 lil_ili 的格子(lil_ili个格子)染成第 i 种颜色。问最终能不能使得每个格子都有颜色,且这m种颜色每种至少在一个格子上出现。题解:如果∑li<n\sum l_i<n∑li<n 或者 i−1+li>ni-1+l_i>ni−1+li>n那么不可以。前者显然,后者前 i−1i原创 2020-08-25 09:00:00 · 106 阅读 · 0 评论 -
VK Cup 2015 - Qualification Round 1 D. Closest Equals (主席树)
题目链接题面:题意:给定一个数组 ai,有m个询问,每个询问给定 l ,r 去区间 [ l , r ] 中相同的数字的最近距离。题解:考虑主席树。当前是第 i 个数据,即 a [ i ] , 设 p [ a [ i ] ] 是 a [ i ] 之前离 a [ i ] 最近的相同的数的位置。那么在第 i 棵树上的 p [ a [ i ] ] 位置 更新最小值为 a [ i ] - p [ a [ i ] ]考虑查询 l ,r我们在第 r 棵树上查询 l 以后的最小值。因为本身就原创 2020-08-24 22:09:54 · 173 阅读 · 0 评论 -
Codeforces Round #296 (Div. 2) E. Data Center Drama (欧拉路)
题目链接题面:题意:给定一张无向连通图,你需要添加最少的边并且给每条边定向使得每个点的入度和出度都是偶数。into groups of two 一度在纠结是分成两组,还是每组两个。。。。。导致读题没读懂。题解:考虑欧拉回路。在欧拉图中,每个点的度数都是偶数,所以我们可以先把他构成一张欧拉图(奇数顶点一定有偶数个,两两连边即可),因为每个点入度和出度都是偶数,那么每个点总度数都是一定是偶数,至少要把当前的图变为欧拉图。若欧拉回路的长度为偶数,例如 a-b-c-d-a 那么 a–>b原创 2020-08-24 22:09:41 · 105 阅读 · 0 评论 -
Codeforces Round #293 (Div. 2) E. Arthur and Questions (思维、贪心)
题目链接题面:题意:给你a1----an,k,要求a [ 1 ] + … + a [ k ] < a [ 2 ]+ … + a [ k+1 ] < a [ 3 ] + … + a [ k+2 ]<…,然后这里的 ai 有可能是 ?,要求你填 ? 的数字,使 a1~an 的绝对值之和最小,不可能输出 Incorrect sequence题解:由上式要求我们可以得到 a [ 1 ] < a [ k+1 ] < a [ 2k+1 ] < …且 a [ 2 ] &原创 2020-08-24 22:09:32 · 77 阅读 · 0 评论 -
Codeforces Round #294 (Div. 2) E. A and B and Lecture Rooms (LCA)
题目链接题面:题意:给定一棵树。有m个询问,每个询问给出 a,b 两点,问树上到 a,b 距离相同的点有多少个。树上两点之间的距离为两点之间的最短距离。题解:① a==b 那么 n个点与a,b的距离都相同 ans = n②若dis(a,b)为奇数,那么没有任何点与a,b的距离相同 ans = 0③设 lc = lca(a,b),如果dis( lc,a )= dis( lc ,b ),那么除了 a,b所在的 lc 的子树,其他的节点都可以。我们设 a 所在的 lc 的子树的根节点为原创 2020-08-24 22:09:22 · 93 阅读 · 0 评论 -
Codeforces Round #293 (Div. 2) D. Ilya and Escalator ( 概率dp )
题目链接题意:n个人排队按顺序上电梯,若某一时刻轮到某人上电梯了,他上电梯的概率为p,不上电梯的概率为 1-p,若他不上电梯,那么他后面的人不能上电梯。问,t 时间电梯上人数的期望。题解:感觉自己越来越垃圾了,这个题都不会了。设 dp [ i ] [ j ] 为 i 时间 电梯上有 j 个人的概率。#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#原创 2020-08-24 22:09:14 · 146 阅读 · 0 评论 -
Codeforces Round #292 (Div. 2) E. Drazil and Park (RMQ)
题目链接题面:题意:给定一个圆,圆上有n个点,每个点有个属性 hi,第 i 个点与第 i + 1个点距离为 di定义两个点之间的距离为 2*(hx + hy) + dis (x,y)。从 x 到 y 可以顺时针走也可以逆时针走,中途会途径其他点(位于所走一侧的x与y之间的点会被途径)现在给定某一个区间 [ l,r ] ,这个区间内的点均不能走,问在能选的区间内,我选择两个点,这两个点之间的最大距离是多少。保证能选的点至少有两个。题解:由于所给定区间 [ l,r ] 中的点都不能走,如果原创 2020-08-24 22:08:56 · 82 阅读 · 0 评论 -
Codeforces Round #292 (Div. 2) D. Drazil and Tiles (拓扑序)
题目链接题面:题意:给出一个N×M 的网格,一些位置是障碍,其他位置是空地,求是否存在一个用 1×2的骨牌(可以转成 2×1)铺满空地的方案,以及方案是否唯一。骨牌不能放到网格以外,不能重叠,不能覆盖在障碍物上。N,M≤2000题解:如果一个空地的周围四联通部分只有一个空地,那么必定有一个骨牌要放在这两个空地上。同时,这一次放置可能会影响另一个空地的四联通部分的选择方案。这就像一个拓扑排序。首先记录每一个点四联通的格子里空地的数量,将数量为1的放进队列里,然后逐个放置,check 周围是否原创 2020-08-24 22:08:46 · 81 阅读 · 0 评论 -
Codeforces Round #289 (Div. 2) F. Progress Monitoring (计数类dp、记忆化搜索、区间dp)
题目链接题面:题意:给定一棵树的 dfs 方式和 dfs序,问满足这个dfs序的不同的树有多少棵。题解:表示状态:dp [ i ] [ j ] = numbers表示 a [ i to j ] 这些节点,以 a [ i ] 为根所能构成的树的方案数。找出答案:ans = dp [ 1 ] [ n ]如何转移:dp [ i ] [ j ] 一 定以a[i]为根,且第一个访问的子节点一定是 a [ i + 1 ] 。所以将 dp [ i ] [ j ] 分为三部分:(1)根原创 2020-08-24 22:08:31 · 86 阅读 · 0 评论 -
Codeforces Round #289 (Div. 2) D. Restoring Numbers (思维、构造)
题目链接题面:题意:v [ i ] [ j] = ( a [ i ] + b [ j ] ) %k现在给定一个n*m的矩阵w,问w能不能由以上方式构造出来,若不能输出NO。若能输出YES,并且输出k,a1–an,b1–bm贴一下官方题解:题解翻译:我们发现,如果 ai ,bi 是其的一个解,那么对于任意一个整数p来说,ai - p 和 ai + p也是他的一个解。所以我们可以将 a1 赋值为0,那么 bi 就可以通过 w 的第一行求出来。然后通过 b1 和 w 的第一列将 a原创 2020-08-24 22:07:54 · 75 阅读 · 0 评论 -
Codeforces Round #289 (Div. 2) E. Pretty Song (数论、概率)
题目链接题面:题意:给定一个字符串s,计算其中各子串中A、E、I、O、U、Y所占比例,输出比例之和。题解:假定sum[i]表示1~i中元音字母的个数,len表示字符串总长度,字符串从下标1开始。对于长度为1的子串,每个元音字母都要用1次,即(sum[len] -sum[0]) / 1,对于长度为2的子串,s[2]到第s[len-1]的元音字母都要用2次,而第s[1]和s[len]位置的元音字母只需用1次,即( (sum[len] -sum[0]) + (sum[len-1] - sum[原创 2020-08-24 22:07:18 · 94 阅读 · 0 评论 -
Codeforces Round #289 (Div. 2) C. Sums of Digits (思维、贪心)
添加链接描述题意:给定一个 由递增序列的每个数的各位数字之和 组成的序列,还原这个递增数列,并且使递增数列的 an 最小。题解:贪心策略,尽量使当前的数接近上一个数且大于等于上一个数+1假设 b[i]>b[i-1],那么就在上一个数的基础上,从低位到高位如果某一位不足9,就把某一位+1,直至把增量 b[i]-b[i-1] 抵消掉。若b[i]<=b[i-1] 那么就需要找到一个数位+1,低于这一位的数位都清零,然后再从低位往高位补具体的说,我们假设 ans = b[i]-b[i-原创 2020-08-24 22:06:54 · 75 阅读 · 0 评论 -
Codeforces Round #291 (Div. 2) E. Darth Vader and Tree (dp + 矩阵快速幂优化)
题目链接题面:题意:有棵无限大的有根树,每个节点都有N个孩子,每个孩子距离父亲节点的距离为di.求距离根节点距离<=x的节点个数。题解:注意到 di <= 100我们 设 dp [ i ] 为距离根节点为 i 的点的个数,sum [ i ] 为距离根节点小于等于 i 的点的个数。cnt [ i ] 为距离父亲节点 为 i 的点的个数。那么有转移方程。for(int i=1;i<=100;i++){ for(int j=1;j<=i;j++) { dp[i原创 2020-08-24 22:06:31 · 104 阅读 · 0 评论 -
Codeforces Round #291 (Div. 2) D. R2D2 and Droid Army (思维)
题目链接题面:题意:有n个机器人站在一排,每个机器人有m个属性值,第 i 个机器人的 第 j 个属性值为 a [ i ] [ j ] 。我现在有一把能发射 k 发子弹的枪,我可以选择每发子弹种类(如果某发子弹的种类为 j ,则其只能对所有机器人的 j 属性值造成伤害,使所有机器人的 j 属性值 -1)。如果一个机器人的 m 个属性值都降至 <=0,那么这个机器人就会死亡。输出子弹怎样分配,才能使连续死亡的机器人最多。子弹可以不用完。题解:枚举+尺取用 multiset 维护 到当前位原创 2020-08-24 22:04:19 · 73 阅读 · 0 评论 -
Codeforces Round #291 (Div. 2) C. Watto and Mechanism(哈希)
题目链接题意:给定n个串,然后给出m个询问。对于每个询问,判断 能否 更改一个字符使得其变为n个串中的一个。串只有 a b c 三种字符。hash乱搞+枚举。题解:好像没写过hash的博客,就拿这个来写一下。⑧过单hash被卡掉了,双hash乱搞一下就好啦。为了不显得那么乱,把两个hash分开了。#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>原创 2020-08-24 22:03:34 · 122 阅读 · 0 评论 -
Codeforces Round #290 (Div. 2) E. Fox And Dinner (网络流)
题目链接题面:题意:给出n个人, 以及每个人的值ai, 要求他们坐在一些桌子上面, 每个桌子如果有人坐, 就必须做3个人以上。 并且相邻的两个人的值加起来必须是素数。每个人的值都>=2.题解:由大于等于2这个条件, 可以知道出现的素数都是奇数(若相邻两个人的值的和为素数,那么一定是奇数), 那么很明显就需要一奇一偶相邻这样做, 那么一个桌子上必定有偶数个人。 一个奇数旁边有两个偶数, 一个偶数旁边有两个奇数。①、那么我们建立一个源点,将源点连入各个奇数节点,设定权值为2,表示其可以有两个原创 2020-08-24 22:03:16 · 131 阅读 · 0 评论 -
Codeforces Round #288 (Div. 2) D. Tanya and Password (有向图欧拉路)
题目链接题面:题意:给定 n 个长度为 3 的串,问能不能由这 n 个串组成一个长度为 n+2 的串。题解:这类题目好像之前做过,就是形成一张图,然后判定是不是有欧拉路。因为是 n 个长度为 3 的串,形成一个长度为 n+2 的串,那么中间的重叠的地方一定是某个串的后两位和某个串的前两位。譬如说 abb bbc 形成长度为4的串,一定是 abbc。我们可以由每个串的前两位向后两位连边。然后判断是否存在欧拉路径。若存在欧拉路径,则说明可以一笔画画完整张图,则说明可以形成一个n+2长度的串原创 2020-08-24 22:03:05 · 143 阅读 · 0 评论 -
Codeforces Round #286 (Div. 2) E. Mr. Kitayuta vs. Bamboos(二分,思维)
题目链接题面:题意:因为是“最小化最大值”,容易想到二分答案。设二分值为mid,我们要判断是否能使最终所有竹子的高度都≤mid。如果从前往后安排每一天,会发现很难找到一种固定的贪心策略,来确定当天砍哪些竹子。换个角度。考虑最后一天,所有竹子会长高ai米。那么在最后一天竹子开始生长之前,第 i 个竹子不能高于 mid−ai 米。如果我们在最后一天不砍第 i 个竹子,那么在倒数第二天竹子开始生长之前,第 i 个竹子不能高于mid − 2 * ai米。如果在最后一天砍了第i个竹子,设砍了x次,那么在原创 2020-08-24 22:02:55 · 125 阅读 · 0 评论 -
Codeforces Round #286 (Div. 2) D. Mr. Kitayuta Technology (拓扑序,并查集,思维)
题目链接题面:题意:给定n个点和m条单向边,边有传递性,即 a->b,b->c 可实现 a->c, 问满足 输入的m条单向边的实现 , 最少需要多少条单向边。即最少需要多少条单项边可以满足给定有向图中点的可到达关系。弱连通图:有向图的基图联通。基图:有向图的所有有向边全部替换成无向边所形成的图。题解:若有向图的某个弱连通分量没有环,那么通过拓扑序可用 x-1 条边把这 x 个点连接起来使之符合要求。若有向图的某个弱连通分量有环,那么至少需要 x 条边(使这x个点形成一个原创 2020-08-24 22:02:44 · 91 阅读 · 0 评论 -
Codeforces Round #286 (Div. 2) C. Mr. Kitayuta, the Treasure Hunter(线性dp)
题目链接题面:题意:有30001个岛屿,下标为0~30000,给n个数告诉你有n份宝藏藏在哪些岛上。你从0往下标大的方向跳,第一步跳的距离为d。如果上一步跳的距离为D,这一步就可以跳D-1或D或D+1(但是距离必须大于0)。问最多拿到多少宝藏。题解:dp [ i ] [ j ] 表示跳到第 i 个岛屿上且前一步 跳跃距离为 d + j 的最大值。因为每次只能增加1或者减少1,那么 d 往上波动不超250,往下波动不超250。接下来线性递推就可以啦。#include<iostr原创 2020-08-24 22:02:27 · 119 阅读 · 0 评论 -
Codeforces Round #286 (Div. 2) B. Mr. Kitayuta Colorful Graph(并查集)
题目链接题面:题意:给定一张n个点m条边的无向图,每条边都有颜色,询问两个点之间一共有多少种不同的连接。每种连接经过的边只能有一种颜色,两个连接所经过的边的颜色不同视为两个连接不同。具体参考样例。每种颜色对点建立一个并查集,询问时枚举颜色,若在当前颜色的并查集下x与y联通,那么就存在当前颜色下的连接。#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>原创 2020-08-24 22:02:14 · 80 阅读 · 0 评论 -
Codeforces Round #287 (Div. 2) E. Breaking Good (最短路)
题目链接题面:题意:给定一张n个点m条边的无向图,保证没有自环和重边。每条边是好边(z=1),或者坏边(z=0).现在要求一条从1–n的最短路,在最短路上的坏边要修改成好边,在最短路以外的好边要修改成坏边,这个修改次数为最短路的修改权值。若有多条最短路,则选择修改权值最小的一条最短路。修改权值=最短路上的坏边+最短路以外的好边修改权值=最短路上的边 - 最短路上的好边 + 全图的好边 - 最短路上的好边修改权值=最短路上的边 + 全图的好边 - 2*最短路上的好边要想使修改权值最小,原创 2020-08-24 22:02:05 · 98 阅读 · 0 评论 -
Codeforces Round #287 (Div. 2) D. The Maths Lecture (数位dp)
题目链接题面:题意:给定 n,k,m。其中n是数的位数,不允许有前导0.k是给定的模数,要求某数存在一个后缀可以整除k。即 y%k==0,且y>0m是给定的模数,要求最终答案对m取模。即:求n位数中,存在 可以整除k 的后缀的数的数量,其中后缀>0。#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cst原创 2020-08-24 22:01:53 · 86 阅读 · 0 评论 -
Codeforces Round #285 (Div. 2) E. Misha and Palindrome Degree (思维)
题目链接题意:给出一个长度为 n 的序列 ai ,定义该序列的回文度为区间 ( l , r ) 的对数,其中 l , r 需要满足1 ≤ l ≤ r ≤ n 且对 al , … , ar重排之后,长度为n的序列(原序列)变成回文序列。题解:统计每个数字出现的次数num[i],如果序列长度为偶数且num[i]中有奇数或者序列长度为奇数且num[i]中有超过一个奇数则不可能回文,方案数为0。否则首先从两端开始往中间找已经回文的最长长度pos,那么只要区间左右端点取在两端这pos个位置均可回文,方案数p原创 2020-08-24 22:01:31 · 97 阅读 · 0 评论 -
Codeforces Round #285 (Div. 2) D. Misha and Permutations Summation (康托展开,逆康托展开,变进制数)
题意:给出两个1–n的全排列 p,q 。ord(p) 为 p 在所有全排列中的字典序排名(从0开始)ord(q) 为 q 在所有全排列中的字典序排名(从0开始)求 排名为( ord(p) + ord(q))% n! 的全排列。题解:先在变进制数下表示 p ,q 的康托展开,然后在变进制数下相加(最后一次相加可能溢出,不处理,相当于对 n! 的取模),再将相加后的变进制数逆康托展开。#include<iostream>#include<cstdio>#include原创 2020-08-24 22:01:22 · 94 阅读 · 0 评论