自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线性DP(逆序求解):尼克的任务

题目链接:https://www.luogu.com.cn/problem/P1280分析:DP的状态表示的第一个念头就是我们题目求的是什么,我们就表示什么。1.如果正序来进行求解的话,定义f[i]为1~i时间段内能够休息的最大时间。那么我们会发现,前面的选择情况对后面是有影响的。比如a[i]这个点有多个工作,那么我们选择的任何一种工作对未来都会存在影响,而这就不满足动态规划的无后效性了。所谓的无后效性,即对于某个给定的阶段状态,它以前各阶段的状态无法直接影响它未来的决策。2.而如果通过逆

2021-12-01 22:19:20 295

原创 DSU ON TREE:Tree Requests

题目链接:https://codeforces.com/contest/570/problem/D分析:1.按照题意,某个节点作为根节点的子树,其对应深度的节点进行随机排列能够组成一个回文串,要满足这个条件需要什么?情况1(1):此串中相同字符出现次数都是偶数次。(aabb)情况2(2):此串中最多只有一个字符出现的次数为奇数。2.既然知道了第一个知识,那么我们就可以知道想要求 是否满足,就要对其对应深度的节点值进行次数统计。3.首先看暴力求法,将所有节点作为根节点去遍历其

2021-11-30 21:35:18 227

原创 贪心 + DP(01背包):烹调方案

题目链接:https://www.luogu.com.cn/problem/P1417分析:1.此题目为什么不能用普通的01背包呢?因为01背包的要求是不同顺序的选取对结果不会造成影响,而此题不是,此题相同的总选取物品在不同选取顺序下,得到的答案是不同的。(也可以看成,价值在不断的改变,虽然物品没变,但是在不同的时间取,对应的价值不同,实际上就可以看成是不同的物品。所以不能用普通的01背包)。2.还需要加上贪心的思路:列一下公式,两个物品哪种取值是最优的呢?,i,j两个物品i先取然

2021-11-30 15:36:00 233

原创 思维 + 二进制字符串处理:Strange Memory

题目链接:https://codeforces.com/gym/102832/problem/D分析:此题枚举一下就会发现:下标i中对应的1的个数有多少个(如x个),c[]中最大值就为c ^ x。所以此题最主要的就是求从1 ~ n中二进制下遍历统计所有情况的总个数。比如二进制下只有一个1的总个数,只有2个1的总个数,只有3个1的总个数......而这个的求法,可以使用O(N)的方式进行求解。参考文献:https://blog.csdn.net/qq_49120553/articl.

2021-11-29 22:43:10 95

原创 思维:C. Balanced Bitstring

题目链接:https://codeforces.com/contest/1405/problem/C分析:此题需要发现,ch[1] == ch[k + 1] == ch[2 * k + 1] ..... == ch[n * k + 1]就可以暴力的写出了。因为,如果前k个满足条件的话也就是 1 ~ k 满足题目要求的话。那么现在要 i + 1 ~ k + 1满足条件。由于i~k满足条件,则这个时候i ~ k 的所有值是固定的。我们可以发现 1+ 1 ~ k + 1 也就是删除了第i个字..

2021-11-26 20:03:53 490

原创 思维 + 贪心:Array Cancellation

题目链接:https://codeforces.com/contest/1405/problem/B分析:此题主要是要想到,我们可以发现,因为前面的值减少,后面的值增加,所以对于正数i,我们让a[i]减少,a[i + 1]增加。 因为a[i + 1]如果为正数,增加之后,再按照这个思路减少,不花钱。如果为负数,则刚好。如果a[i]还是为负数。那么这就要花钱,因为前面已经为0,必须队i进行加法,而后面进行减少。那么对哪个进行减法呢?花了钱的减法很珍贵。1.放到后面的正数上,本来加法减就不

2021-11-26 17:25:10 357

原创 思维 + BFS搜索:Luggage Lock

题目链接:https://ac.nowcoder.com/acm/contest/24346/J分析:此题最主要的是要发现,不管初始状态和终止状态如何,当两个点距离一定的时候,它们的最优解也是确定的。比如起始值的 第一个值 和终止值 第一个值 相差 向上 t1步。第二个值 和第二个值 相差 向上 t2步第三个值 和 第三个值 相差 向上 t3步第四个值 和 第四个值 相差 向上 t4步也就是状态为t1 t2 t3 t4的时候,它们向上或者向下移动操作的最优解是固定的。而..

2021-11-22 22:29:02 146

原创 贪心 + 差分 / 递归:积木大赛

题目链接:https://ac.nowcoder.com/acm/contest/19483/I分析1:递归此题由于每次都只能够去给某一个区间去增加一定的积木。我们进行一下模拟后会发现,如: 2 3 2 4我们可以先给所有的区间都加2.然后给下标2的位置 + 1, 在给下标4的位置 + 2所以,我们会发现,小值原来是分界点。当小于小值的时候,我们可以直接整个区间都进行加。当小值为0后,就会分界。区间变小。然后依然还是按照此方式进行添加。所以,递归实现的话就是,先找到

2021-11-22 22:23:16 418 1

原创 区间DP CF D题:Coloring Brackets

题目链接:https://codeforces.com/contest/149/problem/D题目要求:1.括号要么红色,要么蓝色,要么不涂颜色2.配对的括号 有且只有一个且必须得有一个涂 颜色。3.相邻两个括号不能有相同的颜色,但是可以都不涂颜色求方案数。分析:DP分析方式:(1)分析最优子结构,分割子问题,这里子问题都是有特点的,比如串,可能就是和某个其他字符匹配,因为就可以从匹配的位置分割子问题(2)确定dp状态的含义此题主要是存在两个限制情况,两个配对

2021-11-21 11:14:49 376

原创 模拟 + 栈 + DP:括号

题目链接:https://ac.nowcoder.com/acm/problem/230731分析:这道题目写的时候有一个地方没有想到,就是左边的括号如果还有没有配对的情况,那么他也可以与右边的括号进行配对。如:( ( ( ( ) (( )) () ) ) )红色的括号进行配对的情况当时写的时候没有考虑到。栈:用于存储前面还剩下多少个“ ( ”没有被配对。 因为配对的话," ) "一定是和 最近的" ( "进行配对的。剩下的用栈进行存储,后进先配对。当在次遇到右括号,那...

2021-11-20 15:41:58 115

原创 带权并查集:How Many Answers Are Wrong

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3038分析:首先可以先参考此题目:https://blog.csdn.net/qq_49120553/article/details/118785150此题首先需要注意到的一点是使用带权并查集,这道题目最需要注意的一点就是这道题目是端到端的总和求和,而我们使用带权并查集的时候,是维护端到端的距离值。举例:[1,4] 的距离为30 , [3,4]的距离为10, 如果按照端到端的举例的话,含义就

2021-11-18 16:07:24 88

原创 线段树(区间修改 + 区间查询) + 二分:Vases and Flowers

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4614分析:此题唯一需要注意到的是,当我们进行操作1去找第一个和最后一个的时候,可以使用二分找答案的方式进行求解。线段树中sum:表示区间L~R中空花瓶的总数。而lazy则表示懒标记。用于区间修改,变为1或者变为0.首先我们将空花瓶的时候定义为1. 所以在刚开始build()的时候,初始化他们全部为1.当我们使用操作2,扔花的时候,就是区间修改为0而当我们使用操作1,种花的时

2021-11-16 23:56:05 353

原创 线段树+扫描线的应用:覆盖的面积

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255分析:此题实际上就是在基础扫描线的基础上加了一个条件,覆盖两次及以上的总面积。基础扫描线题目:https://blog.csdn.net/qq_49120553/article/details/119427277此题就是在这道题目的基础上求至少覆盖两次的总面积。实际上此题就是在模板题的基础上,在线段树上,既维护原先的len,作为新的len1也就是至少覆盖一次的总的y的长度。在加一个

2021-11-16 20:21:20 301

原创 CF思维题: K-beautiful Strings

题目链接:https://codeforces.com/contest/1493/problem/C分析:此题是一道构造类的思维题目:思路实际上就是按照题目的要求,最后要么输出的是-1,要么输出一个字符串,并且如果输出的是一个字符串的话有要求,必须在字典序上大于等于给出的字符串。所以首先,答案为输出原字符串的情况,很简单,直接算所有的字符是否是k的倍数即可。输出-1的情况,也简单,字符串长度不是k的整数倍就是输出-1.最麻烦的就是输出的结果是字典序大于原字符串的情况。即

2021-11-13 11:18:07 438

原创 线段树 + 二分答案:Haybale Guessing G

参考文献:https://80358.blog.luogu.org/bzoj1594题目链接:https://www.luogu.com.cn/problem/P2898分析:首先想一下矛盾的情况有哪些?此两种情况会产生矛盾,第二条的话就判断两个无交集的区间是否有相同的最小值,有的话那么一定是错的。第一条的话可以从大到小的方式求解区间,如果当前所求的区间在之前已经求过的话,那么这个区间之前已经确定了一个更大的值,那么当前区间和之前确定的区间之间就会存在矛盾。同时,对于...

2021-10-14 20:10:01 105

原创 CF + 思维题:Strange Birthday Party

题目链接:https://codeforces.com/contest/1471/problem/C题目:我有n个朋友,商店有m种商品,这m种商品按序号价格从小到大排列,对于每一个朋友我给出一个序号k,我可以直接给朋友序号k的商品价格的金钱或给朋友买一个序号小于等于k的商品,且每种商品最多只能买一次,问我需要花费的最少金钱?分析:此题有一个很重要的信息,就是c[i] < c[i + 1] < c[i + 2] ,所有的c[]值输入时就是升序排列的。所以我们可以将k[]进

2021-10-11 14:30:14 89

原创 堆:合并果子

题目链接:https://www.luogu.com.cn/problem/P6033题目:题目背景本题除【数据范围与约定】外与P1090完 全 一 致。题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过(n - 1)次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为...

2021-08-26 11:39:37 122

原创 搜索:IDA* (迭代加深 + 估计函数) 2:回转游戏

题目链接:https://www.acwing.com/problem/content/description/183/题目:如下图所示,有一个#形的棋盘,上面有1,2,3三种数字各8个。给定8种操作,分别为图中的A∼H。这些操作会按照图中字母和箭头所指明的方向,把一条长为7的序列循环移动1个单位。例如下图最左边的#形棋盘执行操作A后,会变为下图中间的#形棋盘,再执行操作C后会变成下图最右边的#形棋盘。给定一个初始状态,请使用最少的操作次...

2021-08-24 19:14:12 120

原创 搜索:IDA* (迭代加深 + 估计函数) 1:排书

题目链接:https://www.acwing.com/problem/content/description/182/题目:给定n本书,编号为1∼n。在初始状态下,书是任意排列的。在每一次操作中,可以抽取其中连续的一段,再把这段插入到其他某个位置。我们的目标状态是把书按照1∼n 的顺序依次排列。求最少需要多少次操作。输入格式第一行包含整数T,表示共有T组测试数据。每组数据包含两行,第一行为整数n,表示书的数量。第二行为n个整数,表示1∼n 的...

2021-08-24 16:37:55 114

原创 搜索:双向DFS:送礼物

题目链接:https://www.acwing.com/problem/content/173/题目:达达帮翰翰给女生送礼物,翰翰一共准备了N个礼物,其中第i个礼物的重量是G[i]。达达的力气很大,他一次可以搬动重量之和不超过W的任意多个物品。达达希望一次搬掉尽量重的一些物品,请你告诉达达在他的力气范围内一次性能搬动的最大重量是多少。输入格式第一行两个整数,分别代表W和N。以后N行,每行一个正整数表示G[i]。输出格式仅一个整数,表示达达在他的...

2021-08-24 11:28:44 63

原创 搜索:dfs + 剪枝 : 生日蛋糕

题目链接:https://www.acwing.com/problem/content/description/170/题目:7月17日是 Mr.W 的生日,ACM-THU 为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。设从下往上数第i层蛋糕是半径为Ri,高度为Hi的圆柱。当i<M时,要求Ri>Ri+1 且Hi>Hi+1。由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。令...

2021-08-23 21:32:00 70

原创 搜索: DFS + 剪枝:木棒

题目链接:https://www.acwing.com/problem/content/169/题目:乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。输入格式输入包含多组数据,每组数据包括两行。第一行是一个不超过64的整数,表示砍断之后共有多少节木棍。第...

2021-08-23 20:28:22 139

原创 搜索:dfs + 剪枝:数独

题目链接:https://www.acwing.com/problem/content/168/题目:数独是一种传统益智游戏,你需要把一个9×9 的数独补充完整,使得图中每行、每列、每个3×3的九宫格内数字1∼9 均恰好出现一次。请编写一个程序填写数独。输入格式输入包含多组测试用例。每个测试用例占一行,包含81个字符,代表数独的81个格内数据(顺序总体由上到下,同行由左到右)。每个字符都是一个数字(1−9)或一个‘ .’(表示尚未填充)。您可以假设输入中的每个谜...

2021-08-22 19:25:49 141

原创 搜索: dfs与剪枝:小猫爬山

题目链接:https://www.acwing.com/problem/content/167/题目:翰翰和达达饲养了N 只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。翰翰和达达只好花钱让它们坐索道下山。索道上的缆车最大承重量为W,而N只小猫的重量分别是C1、C2……CN。当然,每辆缆车上的小猫的重量之和不能超过W。每租用一辆缆车,翰翰和达达就要付1美元,所以他们想知道,最少需要付...

2021-08-22 16:15:36 94

原创 搜索:dfs:分成互质组

题目链接:http://ybt.ssoier.cn:8088/statusx.php?runidx=12116507题目: 【题目描述】 给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组? 【输入】 第一行是一个正整数n。1 <= n <= 10。 第二行是n个不大于10000的正整数。 【输出】 一个正整数,即最少需要的组数。 【输入样例】 614 20 33 117 143 175

2021-08-22 15:35:28 88

原创 动态规划 + 数论:Baby Ehab Partitions Again

题目链接:https://codeforces.com/contest/1516/problem/C题目:给出 n ( n ≤ 100 )个数的序列 ai ( 1 ≤ a i ≤ 2000 ) 若这个序列能被分成两部分且这两部分的和相等,称这个序列是不好的。最少删除几个数使得这个序列是好的。分析:不好的序列,可以分成两部分,而这两部分的值相等,则其总和必定为偶数。所以先求总和,如果为奇数,则说明一定已经是好的了。输出0即可。那么总和为偶数的时候呢?这个要比为奇数要复杂很多。.

2021-08-18 20:14:15 72

原创 异或 + 贪心:AGAGA XOOORRR

题目链接:https://codeforces.com/contest/1516/problem/B题目:给出一个长度为 n 的序列,可以进行若干次操作,每次操作将某相邻两数变为他们的异或和(注意操作后序列长度减一)。求是否可以经过若干次操作,得到一个长度至少为 2 且所有元素相等的序列。分析:首先,长度至少为2,并且元素相等。那么就会有一个有意思的情况,那就是满足这个条件的话,那么最后异或得到的结果,当满足值相等,长度为偶数时,得到的结果为0.当满足值相等,长度为奇数时,

2021-08-18 00:18:42 253

原创 贪心:推销员

参考文献:https://www.luogu.com.cn/blog/Rainy7/solution-p2672题目链接:https://www.luogu.com.cn/problem/P2672题目:题目描述阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户。螺丝街一共有N家住户,第ii家住户到入口的距离为Si​米。由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等。阿明会从入口进入,依次向螺丝街的

2021-08-17 21:02:45 117

原创 双端队列BFS:电路维修

总结:当图中节点之间边的权值只有0 和 1的时候,我们可以使用双端队列 + BFS的方式 求解 某个点 到 其他节点的最短距离。其方式是当前可以扩展到的点的权重为0时,将其加入队首;权重为1时,将其加入队尾。因为,只有当权重为0的时候,其新加入的点加入到队首,不会破坏掉队列的单调性 和 两段性(左边都为x,右边为x + 1),毕竟用BFS求解最短路的一个原因就是队列维护着两段性 和 单调性,每次取出的值都是当下最小值的原因。所以这个感觉上可以看成是一个堆优化的dijkstra算

2021-08-17 16:16:21 243

原创 搜索:多源BFS:矩阵距离

多源BFS 转 单源BFS 原理:首先,我们需要了解到这么一个知识。求 一个点A,到多个固定的点B,C,D的距离的所有值中 最短距离的这个值。 如果用bfs暴力来求,实际上就是,按照单源BFS的方式,以B作为起点,用BFS走到A的距离,记为dist[1].以C作为起点,用BFS走到A的距离,记为dist[2].以D作为起点,用BFS走到A的距离,记为dist[3].最后求出这些dist的最小值就是答案。但是实际上,多源BFS可以转变为单源BFS,就是我们新添加一个点H,这个点到

2021-08-17 15:16:42 128

原创 搜索:BFS(Flood Fill):山峰和山谷

题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1454题目: 【题目描述】 给定一个 n×n的网格状地图,每个方格 (i,j)有一个高度 wij​​ 。如果两个方格有公共顶点,则它们是相邻的。 定义山峰和山谷如下: 均由地图上的一个连通块组成; 所有方格高度都相同; 周围的方格(即不属于山峰或山谷但与山峰或山谷相邻的格子)高度均大于山谷的高度,或小于山峰的高度。 求地图内山峰和山谷...

2021-08-16 20:42:05 207 1

原创 搜索 + 拓扑排序 + 位运算 + bitset<>的应用:可达性统计

题目链接:https://www.acwing.com/problem/content/166/题目:给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。输入格式第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边。输出格式输出共N行,表示每个点能够到达的点的数量。数据范围1≤N,M≤30000输入样例:10 103 82 32 55 95 92 33 94 82 104 ...

2021-08-15 16:49:46 89

原创 双向BFS:字串变换

题目链接:https://www.acwing.com/problem/content/description/192/题目:已知有两个字串A,B及一组字串变换的规则(至多6个规则):A1→B1A2→B2…规则的含义为:在AA中的子串A1A1可以变换为B1B1、A2A2可以变换为B2…B2…。例如:AA=abcdBB=xyz变换规则为:abc→→xuud→→yy→→yz则此时,AA可以经过一系列的变换变为BB,其变换的过程...

2021-08-15 10:55:12 92

原创 树状数组 / 线段树 / DP :三元上升子序列 -> 多元上升子序列(分析3的方式DP)

总结:当你求解某三个值, i < j < k , 且i,j,k对应的值有某个关系的时候,可以考虑固定中间的值(也就是枚举中间的值),求两边对应的满足条件的值。比如此题: 求i < j < k 且 a[i] < a[j] < a[k]的总个数,那么我们就可以枚举j然后 求j的两边。左边小于a[j]的情况,右边大于a[j]的情况,这样就大大降低了解题的难度。题目链接:https://www.luogu.com.cn/problem/P1637题目:..

2021-08-14 09:27:46 144

原创 线段树(区间修改 + 根节点查询):Just a Hook

题目链接:https://acm.hdu.edu.cn/showproblem.php?pid=1698题目:给定一个n, 对于区间[1, n]有如下操作: 选定l, r, 把[l, r]区间全部修改为数值c最后输出[1, n]的区间和分析:首先,根据题意可以知道,求的是1~n的和,也就是直接query()根节点。因此,需要使用一个sum属性在线段树中,用于维护此节点L ~ R的值的总和。但是在这个操作之中,还存在一个区间修改, 而区间修改,就会想到需要使用懒标记的方式。而

2021-08-08 15:31:00 87

原创 线段树(单点修改和区间查询的模板题) / 树状数组: 敌兵布阵

总结:此题主要使用的是线段树的单点修改和区间求和的操作。或者使用树状数组的区间求和的操作题目链接:https://acm.hdu.edu.cn/showproblem.php?pid=1166题目:Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人

2021-08-07 19:52:30 126

原创 线段树 + 多个懒标记: 维护序列

题目链接:https://www.luogu.com.cn/problem/P2023分析:线段树的节点:struct Node{int l,r;int add; // 懒标记 加法int mul; // 懒标记 乘法int sum; // 真正要求的值}1.如何通过属性更新sum值。,如何将sum 的值通过 add 和 mul进行更新,和之前的线段树中的“你能回答这些问题吗”的题目构造节点属性的思想类似,你能回答这些问题嘛的题解链接, 在这道题中为了能够算..

2021-08-06 08:26:20 202

原创 线段树 + 扫描线 + 离散化:亚特兰蒂斯

题目链接:https://www.acwing.com/problem/content/description/249/

2021-08-05 21:57:35 210

原创 线段树 + 懒标记: 一个简单的整数问题2

先说懒标记的具体含义:给以当前节点为根的子树中的所有节点都加上懒标计的值。(不包括根节点自己,当然也可以包括根节点自己)当进行区间修改的时候,线段树为什么需要加懒标记呢?当进行区间修改的时候,最坏的情况就是每一个点都需要修改,导致线段树中所有的节点都被迫修改,这样的话,时间复杂度就为O(N)的情况,因为我们的N开了4倍n。遍历到了所有的节点。这个时间复杂度是无法接受的。所以我们就需要加入懒标记(借鉴线段树的查询操作):懒标记的思想主要是借鉴了线段树的查询操作,在线段树的查询操.

2021-08-05 12:01:50 245

原创 动态规划:传球游戏

题目链接:https://www.luogu.com.cn/problem/P1057题目:题目描述上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目。聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可

2021-08-04 23:47:59 183

空空如也

空空如也

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

TA关注的人

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