自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 Codeforces 1358 D. The Best Vacation(二分)

题目链接题目大意:一年中有n个月,每个月有mi天,每个月中的第i天所获得的积分为i分,要在其中找出连续的x天,使其积分和最大,这x天可以不属于同一年,问积分最多是多少?解题思路:首先可以知道选择的最大的那个区间一定以某个月的最后一天为终点。证明(反证):假设选择的最优区间为[L,R],其中R不是某个月的终点,就说明R的右边为R+1,其中L,R表示区间最左边和最右边所能获得的积分。L=R,此时区间右移一位,ans+(R+1)-L,所以ans增加,不是最优区间。L<R,此时区间右移一位,

2020-05-27 10:33:00 205

原创 Codeforces 1360 G. A/B Matrix(构造)

题目大意题目大意:构造一个n行m列矩阵的01矩阵,使得每行都有a个1且每列都有b个1。如果不存在就输出“NO”,存在就输出“YES”和构造的矩阵。解题思路:不能构造的矩阵就一种情况就是n∗a≠m∗bn*a \neq m*bn∗a​=m∗b。其中每行都有相同的1的个数,且每列也相同,所以我们只要想一种情况能够使构造的每列的1的数量都相同,那就符合情况。所以我们想到每一行都是一段连续的长度为a的1(这就满足每一行都相同且为a的条件),然后每一行都相对于上一行进行移动,移动距离为d,则只需要满足d∗n 

2020-05-25 18:19:29 400

原创 Codeforces 1354 E. Graph Coloring(dfs+dp)

题目链接题目大意:给一个图(不保证连通),需要用1,2,3对图上的每个顶点进行标号,使得标号完成之后相邻顶点的号码的差的绝对值为1,其中n1,n2,n3分别为标号为1,2,3的数量,问这种标号方法是否存在,如果存在则输出标号方案。解题思路:要使相邻之差绝对值为1,则相邻标号只能为1-2,2-3这两种方案,可以发现1和3的地位相同,所以可以把题目转化为对二分图染色,只要分奇偶染色就行了。(1)对每个连通块进行dfs,检查是否为二分图,如果不是则直接输出“NO”,顺便记录每个连通块的奇数点个数O[i]

2020-05-25 09:38:33 215

原创 Codeforces E. Company(线段树+lca)

题目链接题目大意:给定一棵树,每个顶点都有一个序号,然后询问输入l,r,则需要在[l,r]的顶点中选择一个删掉,求其余顶点的lca,要使这个lca深度最大,输出删除的顶点,及lca的深度。解题思路:有一个前置知识:区间的lca是区间中dfs序的in数组中最小和最大的两个顶点的lca。(简易证明:区间[l…r],dfs序为进入的时间戳,out为离开的时间戳,设u是in中最小的顶点,v是in中最大的顶点,设r的lca(u,v),则in[r]≤\le≤ in[u] && out[r] ≥\

2020-05-14 11:50:38 1591

原创 Codeforces 1062 D. Fun with Integers

题目链接题目大意:就是给定n,然后对于每一对x,y其中2≤\le≤|x|,|y|≤n\le n≤n,且x是y的倍数(或者y是x的倍数),倍数至少为2。然后当前值会从x变成y,然后一直变换下去,但是如果x->y出现过了,则x->y和y->x都不能再出现了,则每一次变换得分就是他们的倍数。求一个变换序列中积分最多是多少?解题思路:看样例:2 -> 4 -> -2 -> -4 ->2可以发现从2开始然后跟他的倍数4,-4和自己的+2,-2进行变换之后,会重新变换成

2020-05-13 09:48:09 199

原创 Codeforces 1076 E. Vasya and a Tree(dfs)

题目链接题目大意:给定一个数,总共有m个操作,每个操作包括 v d k。表示以v为根,在v的子树中所有深度≤\le≤d的节点权值都+k,输出每个顶点的权值。解题思路:对树进行dfs可以记录节点深度,每到一个节点,就把以当前节点为根的操作都进行一遍,例如当前深度为dep,就将Add[dep…dep+d]都+k,然后当前节点的答案就为Add[dep],但是dfs回溯的时候要将这些操作撤销,就是将这些操作都变成-k重新操作一次就行了。对区间加减可以使用线段树或区间差分实现就行了。(代码中注释的是线段树操

2020-05-10 18:22:36 117

原创 Codeforces 1068 D. Array Without Local Maximums(DP)

题目链接题目大意:给定一个长度为n的数组,其中有的数已经确定了,有的数是-1则表示还没有确定,询问共有多少个符合条件的数组,使得1.a1≤a2,2.an≤an−1 and3.ai≤max(ai−1,ai+1) for all i from 2 to n−1.条件成立。解题思路:使用dp,设dp[i][j][k]表示处理到第i个且第i项为j且i-1是否大于等于j的方案数。k=0是表示...

2020-05-03 17:47:21 151

原创 Codeforces 1086 E. Multihedgehog(dfs)

题目链接题目大意:1.1-multihedgehog就是有一个顶点度数大于等于3,其他顶点度数都为1。2.k-multihedgehog就是有一个顶点数大于3,然后这个节点的所有相邻节点都是一个(k-1)-multihedgehog的中心,然后继续递归下去。其实画出来就可以看出来要求是一颗至少三叉树(四、五…都可以),树高得是k+1(根节点为1)。问给定的树是否是一颗至少三叉树。解题思...

2020-05-03 17:31:16 212 1

原创 Codeforces 1337 E. Kaavi and Magic Spell(区间dp)

题目链接题目大意:给定一个字符串S和T。有两种操作:1.将S的最前面的字符移到A字符串的最前面,然后将S中的这个最前面的字符删掉。2.将S的最前面的字符移到A字符串的最后面,然后将S中的这个最前面的字符删掉。用不超过n个操作,问有多少个操作序列能够使得生成的字符串的前缀为T。解题思路:听了一些大佬的想法,用区间dp。首先将T想象成S一样长的字符,其中长度大于T的部分就是对任何字符都可...

2020-04-17 15:32:01 217

原创 Codeforces1337 D. Xenia and Colorful Gems

题目链接题目大意:有a,b,c三个数组,从三个数组中各选出一个数,使得这个三个数ai,bj,ck的(ai−bj)2+(ai−ck)2+(bj−ck)2(ai-bj)^2+(ai-ck)^2+(bj-ck)^2(ai−bj)2+(ai−ck)2+(bj−ck)2的值最小,输出这个最小值。解题思路:枚举中间这个数bj,则满足条件的数为ai≤\leq≤bj≤\leq≤ck。因为中间的数确定了,所...

2020-04-17 09:06:34 182

原创 ICPC Southeastern Europe Contest 2019 E. Game on a Tree(树形DP)

题目链接题目大意:给定一棵树,然后Alice和Bob进行博弈,首先Alice选择一个点染色,然后Bob可以将这个点的子节点或者他的祖先进行染色,已经染色的顶点不能再次到达,谁不能动了谁就输了。解题思路:想题的时候先把树变成图,将本节点和其祖先连接起来(无向边),所以就是图上的匹配问题(就是在图上找出边的子集,使这些边没有公共顶点)。最大匹配就是找出的边数最多,完美匹配就是所有顶点都属于其中...

2020-04-15 09:59:40 278

原创 ICPC Southeastern Europe Contest 2019 B. Level Up(DP)

题目链接题目大意:总共要升两级,有n个任务,每个任务有在第一级时候所获得的经验值和所需的时间,每个任务也有在第二级的时候所获得的经验值和所需的时间。其中第一级升级之后多余的经验放入第二级。问升两级所需要的最少时间是多少?如果不能就输出-1。解题思路:定义dp[i][j]为获得第一级经验为i,第二级经验为j所需要的最少时间,可以考虑使用01背包逆序求解以减少第几个任务的这个维度。重点:需要...

2020-04-15 08:59:33 284

原创 Codeforces 1339 D. Edge Weight Assignment(构造)

题目链接题目大意:给定一棵树,给每条边一个正权值然后使得任何两个叶子之间的路径上的异或和为0。输出边的权值的种类的最大值和最小值。解题思路:最小值:只有1,3两种答案。如果两个叶子之间的距离为奇数,可以都转化为3进行处理,此时必须有三种值,因为如果是两种或一种值,则一样的值异或掉会剩下一个值。如果是长度都为偶数则只需要1种就可以了。距离只要选取一个叶子作为根节点,然后进行dfs求深度就可...

2020-04-13 16:07:37 160

原创 Codeforces 1339 E. Perfect Triples(打表找规律)

添加链接描述题目大意:给定一个构造方法,询问这个数列的第i个值是多少。解题思路:直接打表找规律,按三个一行打可以发现第一个数字总是2x^xx到2x+1−1^{x+1}-1x+1−1 递增,其中x为偶数{0,2,4…},所以对查询的x可以先查询所在行的第一个数字。然后按把这个表按四进制打出来可以很明显的看出规律,假如一行的第一个数四进制是:12230,则第二个数为:23310,第三个数为:3...

2020-04-13 11:25:17 375

原创 Codeforces 1326 E. Bombs (线段树)

题目链接题目大意:一个序列p和一个序列q。按p1p2…pn将炸弹放到第1,2,…n的位置之上,每个炸弹都有一个值,然后q的序列是表示当前qi的位置上映

2020-03-23 08:01:03 264

原创 Codeforces 1324 F. Maximum White Subtree(换根dp)

题目链接题目大意:仔细读题,可以发现不是传统的子树,只是一个连通子图,给定一棵树的图,每个节点为“1”或“0”,对每个点输出包含这个点的连通子图的的1的个数-0的个数最大值。解题思路:第一遍dfs随便找一个点作为树根,然后dp1[u]表示包含u及其子树范围的连通子图的最大值。第二遍dfs进行转移。1、当前子树(包含自己)如果是正的,直接取,否则就只取当前点。2、除了当前子树以外(必须...

2020-03-13 15:47:03 207

原创 Codeforces 1234 F. Yet Another Substring Reverse(子集dp)

题目链接题目大意:可以选择一个子串(也可以不选)进行反转,求出操作后的字符串中的最长子串,其中这个子串中要求所有字符都没有重复。解题思路:首先可以将题目简化为选择两个子串,然后将他们连接起来且字符不重复,然后求出这两个子串的和最长是多少,因为两个子串中字符不重复就保证位置不会相交,所以不用再考虑位置的问题了。所以设置状态dp[sta]:表示当前这个状态和他的所有子集中的最长的不重复子串的...

2020-03-09 15:15:33 194

原创 Codeforces 1096 D. Easy Problem(dp)

题目链接题目大意:给定一个字符串,每个字符有自己的权值,可以对字符串进行操作,每次操作可以删除一个字符,花费就是这个字符的权值,问在保证没有子序列“hard”存在的最小花费是多少?解题思路:动态规划,dp[i][sta]表示前i个字符串没有出现sta这个状态的最小花费,sta共有四个值,0:“h”,1:“ha”,2:“har”,3:“hard”。对于不是“hard”这四个字符的则对当前状...

2020-03-09 13:24:07 250

原创 Codeforces 1316 E. Team Building(状压dp)

题目链接总共有n个人,每个人可以当做观众或者球员,每个位置只有一个球员,给定每个人当观众的价值和每个人在每个位置的价值。其中共有p(p<=7)个球员和k个观众,求出怎么安排使得总价值最大。题目大意:首先贪心一下,把他们按观众价值从大到小排序,所以在观众人数还没满的情况下如果不当球员就一定会当观众。然后进行状压dp,状态为dp[i][sta],表示第i个人,其中状态sta上二进制为1的地...

2020-03-05 19:44:19 344

原创 Codeforces 1316 D. Nash Matrix(构造)

题目链接题目大意:需要构造一个n×n的矩阵,每个位置上有一个符号‘U’,‘D’,‘L’,‘R’,‘X’。分别表示上下左右和停止。每个坐标会有一个x,y。假设当前坐标为i,j且上面值为x,y则表示从i,j为起点会在x,y的地方终止。当(x,y)=(-1,-1)表示无法终止,当然要保证在n×n的范围内。问是否能构造出这样的矩阵,不能就输出“INVALID”。能就输出“VALID”和构造的矩阵。...

2020-03-05 11:02:34 195

原创 Codeforces 1305 F. Kuroni and the Punishment(随机算法)

题目链接题目大意:给定一个数组A,每次操作可以对数组中的某一个数进行+1或-1操作(操作完要保证是正整数)。要使最后的数组满足这个数组的所有数的最大公约数不为1。问最小的操作次数。解题思路:(神奇的随机算法)假设最大公约数为2时,每个数最多只需要操作一次就可以了,所以操作次数最多为n。所以需要操作次数≤1的数的数量≥n/2。一个数x操作次数≤1时候会变成x,x+1,x-1三种情况,所以我...

2020-03-04 18:59:55 420

原创 Codeforces 1305 E. Kuroni and the Score Distribution(构造)

题目链接题目大意:给定数字n和m。让我们构造出一个大小为n的正整数数组ans。有两个条件:数组必须是一个严格递增数组,而且数组中的数不能超过109。数组必须包含m个三元组其中三元组(i,j,k)要满足 ans[i]+ans[j] = ans[k],(1≤i<j<k≤n)。解题思路:我们可以看出一种构造就是假设当前数为cur,此时的m为0,我们假设k=cur+1。则之后的...

2020-03-04 17:19:21 267

原创 Codeforces 1305 D. Kuroni and the Celebration(交互题)

题目链接题目大意:这是一个交互题,一颗固定的树,题目给出所树上的边,然后我们可以询问不超过$\lfloor x /2\rfloor$次,最后输出树的根节点。解题思路:我们可以...

2020-03-04 16:44:32 203

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除