![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Boxxxxxxx
只与自己做对比。
展开
-
牛客每日一题4.2 月月查华华的手机 二分查找
问题就是询问某一个串是不是初始串的子序列。那么序列都是小写字母,就对存入每一个字母在初始串的位置。然后对目标串的字母一个个查询,如果存在一个最接近并且比上一个字母远的位置,则这个当前字母是存在序列中的,不断的遍历完整个目标串就可以了。开个vector,upper_bound真香char node[max_],temp[max_];vector<int> ind[30];sign...原创 2020-04-01 11:26:46 · 132 阅读 · 0 评论 -
牛客竞赛每日一题3.27 数学考试 动态规划
虽然说是动态规划实则就是在暴力找答案。我们答案要求的是两个区间,所以我们只要选取一个区间,然后枚举这个区间往前的所有区间能提供的最大答案就好了。我们需要什么呢value[i] , 区间的最后位置是i,这个区间的权值总和.这个value可以用前缀和轻松算。下一个就是fmax[i],代表的是[1,i]这些位置能构成的最大区间权值然后答案明显就是ans = max(ans, value[i] ...原创 2020-03-26 12:08:18 · 164 阅读 · 0 评论 -
牛客每日一题3.25 tokitsukaze and Soldier 权值线段树
考虑我们可以怎么获得答案,如果某一个人选了他,那么答案人数的集合就必定小于等于s[i], 对于答案需要的人的集合的人数为num,那么集合里面所有的s[i]的最小值必然是小于等于num。明确了上述最关键的点后就是可以知道,我们如果答案的人数是2人,则s[i]>=2的全部人数取前2个就是答案,s[i] < 2的被我们排除了。那么解题步骤就是设目标人数是num人,取s[i] >= n...原创 2020-03-24 20:04:50 · 381 阅读 · 0 评论 -
Codeforces Global Round 7 cf 1326D 马拉车
题意是叫你找最长的回文串,然后这个回文串可以由原本的串的前驱+后继拼起来。由于前驱和后继是必须选的对不对(可能有一个为空)。那么我们第一步就是吧原本的串倒置,把正的和反的去找出最长的相同的,这样就满足了前驱+后继的限制。下一步是什么?假设原本的长度是[1,len],我们上面找到的最长相同的长度是3,那么就是接下来剩下的串就是[1 + 3 - 1 , len - 3],剩下的这一段我们只需要找...原创 2020-03-20 11:13:18 · 181 阅读 · 0 评论 -
牛客练习赛59 E 石子搬运 dp+三分法
有n堆石子,第i堆石子的石子数量是ai{a_{i}}ai,作为牛客网的一头领头牛,牛牛决定把这些石子搬回牛客。如果牛牛一次搬运的石子数量是k{k}k,那么这堆石子将对牛牛产生k2{k^{2}}k2的负担值。牛牛最多只能搬运m{m}m次,每次搬运可以从一堆石子中选出一些石子搬回牛客,每次搬运不能同时从两堆石子中选取石子,每次只能搬运整数个石子。牛牛是一只聪明的牛,他想出了一种搬运计划可以最小化他搬...原创 2020-03-14 13:53:49 · 339 阅读 · 0 评论 -
洛谷p2018 树DP
首先,本做法和其他的O(N^2logn)做法是完全不一样的,那种做法比较好理解,我说一下我的做法,感jio是O(Nlogn),不太会算首先思考如何获得每一点要如何知道由当前点出发的答案是什么?对于绝大部分点,都有父亲节点和儿子节点,那么对于每一个点都是这么抉择走的。这里先不看now点,看节点1,如果第一个人从节点1开始要怎么走呢?就是花4次时间, 分别走4跳荧光笔的路径对吧,然后就没节点1什...原创 2020-02-16 07:47:45 · 132 阅读 · 0 评论 -
洛谷p1773 dp
其实, 这个dp还是蛮简单的,dp做多了后就会觉得方程不难出了,其实我的思路和大家都差不多,但是大部分都用了O(N^2)去预处理出这个区间内的值取模后是多少,其实这是完全没有必要的。听我来给你吹f[i][j] = v:前i个字符各种操作后的数字为j,使用的最少的乘法个数为v,最后一个字符必须要落在i后面!!!!为什么我们要强行让他最后一个乘法字符在i后面,因为如果不这么做,我们就无法知道他最...原创 2020-02-14 22:05:38 · 87 阅读 · 0 评论 -
洛谷2285 dp
很水的dp,用于在你蓝题dp做疯了的时候来提高下信心。首先那个距离就是曼哈顿距离,所以小于等于1的格子就是当前格子的上下左右,还包含自身。其实唯一的问题就是如何计算贡献的时候不要算重复了,那么分情况考虑就可以不算重复,f[i][j][0]代表到达ij点的走法是从上面走下来,f[i][j][1]代表到达ij点的走法是从左边走过来。那么到达ij点后,有向下走和向右走,当你画出了图,就什么都知道了...原创 2020-02-11 11:10:07 · 117 阅读 · 0 评论 -
洛谷p2964 其中一种常见的博弈论的dp方法
题目链接在之前,我写dp看见题目说两个人都足够聪明,然后他们进行一些操作,求某些人的最大利益,我完全不知道怎么去设计dp的方法,然后我接触了一道题,看了题解洛谷p2734这道题的dp方法和现在这道题其实在设计思路上面是一样。我不知道现在是谁在取数字,但是我就是要为现在这个取数字的人谋取最大利益这个思想在博弈论的dp是很关键的。回到原题,一开始的玩家可以取k个币,下一个人只能取小于等于k*...原创 2020-01-30 11:42:35 · 611 阅读 · 0 评论 -
Codeforces Round #615 (Div. 3) F 运行最快的做法!!
一开始输出是cout,发现就第二了,改printf就直接第一快了。我说下这题我的做法是什么。题目就是给你一棵树,叫你给出三个点,这三个点相连的简单路径的边数最多。样例的图解释的很清楚是什么意思了。怎么做呢?我一开始首先考虑两个点相连的情况,两个点的情况下什么时候会是拥有最长的边数?很明显就是大家都知道的两个点是树直径的端点时候,树直径大家都会,随便找一点bfs/dfs出最远的一个点,这个点就是...原创 2020-01-24 15:41:53 · 1852 阅读 · 0 评论 -
详解2020 CCPC-Wannafly Winter Camp Day3 Div.1 G火山哥周游世界 树dp
题目链接上面是样例2的图,首先我们看到数据范围就一定要明确,肯定不是暴力,然后由于题目说了是n个点n-1条边,这就是一棵树,在这里就要考虑到树dp!!(要是没想到就没了)我们来考虑下我们要什么,我们需要知道每个点走过所有目标点的最短路程,一个点怎么走完所有的目标点呢?设当前在i点从点i向上走,走完上面所有目标点后回到i,在从i往下走,走到到达最后一个目标点就停止从点i向下走,走完下面所有...原创 2020-01-22 17:21:03 · 1787 阅读 · 0 评论 -
2019icpc 南昌C And and Pair dp
题目链接大意:给你一个超大数字n的二进制表示,询问有多少组数对(i,j),数对要满足,0≤j≤i≤n;i & n=i;i & j=0;首先对于我看到其他的什么数位dp,组合数学,我一个没懂。我说下 我自己是怎么dp的。对题目分析i&n = i,那么说明在二进制的情况下,相同的某一位数,n是1,那么i可以是1,也可以是0.(1&1 = 1, 1 &...原创 2020-01-16 11:30:41 · 631 阅读 · 0 评论 -
详解吉首大学第九届“新星杯”G芒砀山的神秘数字 两种dp
题目链接题目大意就是给一个长的字符串a和一个短的字符串b,询问a里面有多少个序列是大于b的。这里我们分两步来处理,就是我们先算出a中的序列长度和b一样的。因为显然答案是由序列长度一样的数量+序列长度>b的数量。为什么不能直接一起算,因为dp的限制(下面讲)?(1)计算序列长度一样的数量。我们这么考虑由于序列长度是一样的,我们就可以枚举位数的时候有一个比较值。我们类比一下数位dp,数位d...原创 2020-01-09 13:06:20 · 260 阅读 · 0 评论 -
详细讲解康托展开集齐基础例题+模板
单纯讲讲怎么用怎么算,说些人话。预备概念:排列:对于一个数字n的排列就是含有[1,n]所有数字的序列。也就是n取3,那么123,132,213就叫做n的排列,但是112,12,13等等这种就不是排列。什么是康托展开呢?就是把一个n的全排列表示出来并且按照字典序排出来。n取三的全排列有6种,那么就对着6种按字典序小的顺序去排比如123的序号就是1,132的序号就是2.首先我们来讲怎么根据给出...原创 2020-01-06 21:12:44 · 585 阅读 · 0 评论 -
洛谷p1769 DP(线段树思想)
这题乍一看很吓人,实则当你去手画一下比赛过程的时候就可以知道了,假设总人数有8人,1, 2 , 3 , 4 , 5 , 6 ,7 ,8.题目说了每一轮都是按编号顺序从小到大去比赛的那么第一轮就是(1,2),(3,4),(5,6),(7,8).这么个比赛顺序,第二轮就是(1,2)的胜利者去比(3,4)的胜利者(另外两个同理)。这个比赛的过程在我刚刚接触这个题的时候我想的是线段树的过程,但是是一个十...原创 2020-01-06 09:44:07 · 223 阅读 · 0 评论 -
UVA1021洛谷P2583 DP
题目传送门这道题是在我还在很小白的时候看见,刘佳汝的书看见的,那时候看见还以为特别难,现在做多了DP看来其实也蛮水了,首先,一般做dp都是看哪个数据范围小一点就可以考虑从哪里开始设计状态。虽然这题都挺小的题目里面出现一个数据就是时间,时间是一个天然的线性序,可以十分简单的利用时间去完成线性转移,我们再来看一看他要要求的什么,T时间后在车站n的最少等待时间,在普通的DP(不是那种特别骚气的要搞你...原创 2020-01-05 10:25:06 · 184 阅读 · 0 评论 -
hdu6570 动态规划 dp
题目链接:hdu6570题目大意(机翻):Avin正在研究系列。 如果满足以下条件,则一个系列称为“波动”:1)它至少包含两个元素;2)所有位于奇数位置的元素都相同;3)偶数位置的所有元素都相同;4)奇数位置的元素与偶数位置的元素不同。您得到的序列长度为n。 Avin要求您找到最长的“波浪”子系列。 子系列是系列的子序列。第一眼看见,我就觉得他是个dp(看题解才知道暴力也行);我...原创 2019-11-24 10:51:30 · 192 阅读 · 0 评论 -
hdu 6736 dfs
题目链接:hdu6736这个题目由于题目对于给的图有很严重的限制,就是每个边最多只能处于一个简单的循环中,那么其实对于所有的图,都会是那种有一条链,链上的节点有个简单环,简单环的节点又有一条链如此反复。通过分析其实就可以知道,对于每一个边数为n的环,让他变成树的方案数目是2^n -1;就是拆一条的方案+拆2条+。。。。+拆n条。对于每一条单独的链,让他变成树的方案数是2^n ,因为链的话可以...原创 2019-10-18 20:09:39 · 152 阅读 · 0 评论 -
hdu6739 dp
传送门:hdu6739题目就是有很多种技能,想要用某种技能需要集齐某些含有QWE的组合(无序组合),题目就问给你一个按出技能的一个顺序,叫你最少按几次技能可以按出这些技能,(每集齐一个技能的组合要释放还需要按一次R);这就是一道动态规划的题目,不要被题目骗了,虽然技能要按出来只需要一个无序组合,但是由于你这个按的顺序的不同会导致后面按的次数的不同,所以还是要把他当做有序去看,也就是一个技能比如...原创 2019-10-18 11:35:21 · 202 阅读 · 0 评论 -
洛谷p4178 点分治+线段树
题目链接:洛谷p4178这道题目是点分治的题目,与模板题不一样的是,这是要统计小于路径长度为k的点对数。我们分析下与模板题的区别,模板要求的是路径等于k的长度的路径是否存在,然后统计的方法是对于每个重心(跟),求出各点与根的路径,然后重心下面的各个子树中,相同的子树不去统计答案,去计算之前非该子树的路径能否凑出k的路径,也就是吧路径分成了(当前子树的路径与非当前子树的路径),然后其实我们也可以利...原创 2019-10-14 18:43:11 · 206 阅读 · 0 评论 -
洛谷p1006 DP
题目链接:洛谷p1006题目就是说传两次纸条,一次从左上传到右下,一次从右下传到左上,路径不能重复,其实我们换个角度就是从左上传到右下传两次就可以了。借助洛谷大佬题解的一张图你传两次的路径,每一步两个点的连线一定在一条斜线上,那么,其实对于一个矩阵,也就最多只有n+m条斜线,已确定两点在一条线上,那么就比较容易去设计。我们用f[sum][i][j],sum表示当前斜线是哪条(就是斜线上任何...原创 2019-10-13 10:02:49 · 175 阅读 · 0 评论 -
洛谷p2055 二分图匹配
题目描述学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题。比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识。我们假设每个人只能睡和自己直接认识的人的床。那么一个解决方案就是 B 睡 A 的床而 C 睡 B 的床。而实际情况可能非常复杂,有的人可能认识好多在校学生,在校学生之间也不一定都互相认识。我们已知...原创 2019-09-20 20:04:36 · 141 阅读 · 0 评论 -
洛谷p1233 sort+贪心
题目描述一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的。棍子可以被一台机器一个接一个地加工。机器处理一根棍子之前需要准备时间。准备时间是这样定义的:第一根棍子的准备时间为1分钟;如果刚处理完长度为L,宽度为W的棍子,那么如果下一个棍子长度为Li,宽度为Wi,并且满足L>=Li,W>=Wi,这个棍子就不需要准备时间,否则需要1分钟的准备时间;计算处理完n根棍子所需要的最短准...原创 2019-09-19 09:54:56 · 205 阅读 · 0 评论 -
poj3169 差分约束
关于差分约束,我强推这位大佬的博客。https://blog.csdn.net/consciousman/article/details/53812818题目是有的牛互相之间最多只能有一个距离,有的牛最少要达到一个距离。很容易写出不等式,由于是要求最大值,所以是要化为小于等于号,求最短路。F[i]:表示i只牛在哪个位置0=< F[B] - F[A] <= DF[B] - F...原创 2019-09-19 09:12:00 · 139 阅读 · 0 评论 -
洛谷p1993 差分约束+dfs版spfa
这道题算作是差分约束模板题了, 关于差分约束,我强推这位大佬的博客。https://blog.csdn.net/consciousman/article/details/53812818里面博客这段话就是解决这些题目的精髓了;(下面这段话是上面博客里面的)/********************************************************************...原创 2019-09-18 17:29:03 · 154 阅读 · 0 评论 -
poj1655 dfs序+暴力
题意就是给你一棵树,然后去掉一个节点,求去掉哪个节点他的剩下的树的最大节点数最少。输出节点和最大子树节点数。由树dp专题看见这题,但是嘛。。。。。我第一眼都没意识到他是个dp。我的做法是这样的,就跑就只跑一遍dfs序,然后途中记录一下每个节点的父亲是谁。在暴力跑每一个点的答案。遍历每一个点的答案怎么出来呢?就是dfs序后,我们可以得知每一个点与其所有子树的范围在哪里。去掉这一个点,也就是说,...原创 2019-09-12 15:42:52 · 166 阅读 · 0 评论 -
hdu4514 并查集+树直径
这道题题目就是说给你一个图,然后判断能不能成环,不能成环就输出最长的那一条路。首先分析问题。怎么判断环?这是图中一个很常见的问题,在无向图中判环我们可以用并查集,在有向图中可以使用tarjan或者拓扑排序。这个问题是无向图,那么就用并查集就好了,在输入图的过程就可以判断,每当有一条线,我们就找这条线两个端点的父亲,如果父亲一样,那么他们就是构成了环。因为父亲一样说明之前已经两个点用过了并且连在...原创 2019-09-12 13:19:02 · 187 阅读 · 0 评论 -
hdu3974 (dfs序+线段树)
问题:有一家公司有N个员工(从1到N),公司里每个员工都有一个直接的老板(除了整个公司的领导)。如果你是某人的直接老板,那个人就是你的下属,他的所有下属也都是你的下属。如果你是没有人的老板,那么你就没有下属,没有直接老板的员工就是整个公司的领导,也就是说N个员工构成了一棵树。公司通常把一些任务分配给一些员工来完成,当一项任务分配给某个人时,他/她会把它分配给他/她的所有下属,换句话说,这个人和他/...原创 2019-08-18 11:05:54 · 343 阅读 · 0 评论 -
hdu1540(线段树+二分)
问题:在抗日战争期间,华北平原广大地区进行了大规模的隧道战。 一般来说,通过隧道连接的村庄排成一列。 除了两端,每个村庄都与两个相邻的村庄直接相连。入侵者经常对一些村庄发动袭击并摧毁其中的部分隧道。 八路军指挥官要求最新的隧道和村庄连接状态。 如果某些村庄严重隔离,必须立即恢复连接!输入:输入的第一行包含两个正整数n和m(n,m≤50,000),表示村庄和事件的数量。 接下来的m行中的每一行描...原创 2019-08-17 19:03:45 · 199 阅读 · 2 评论 -
洛谷p1062 找规律
看题解都是进制转换,本弱弱一开始没想到,但是搞出了点规律,一样可以过。上图规律就是第 2^n 个数字就是数字 k^n; 然后在第 2^n 到 2^n +1之间的数字,就是第 2^n 的数加上第一个数,第二个数,知道第2^n-1个数。然后我们只要把这个过程模拟出来就可以啦,代码也很短#include<stdio.h>#include<iostream>#inclu...原创 2019-09-20 21:17:18 · 183 阅读 · 0 评论 -
hdu2444 染色法+二分图匹配
有n个关系,他们之间某些人相互认识。这样的人有m对。你需要把人分成2组,使得每组人内部之间是相互不认识的。如果可以,就可以安排他们住宿了。安排住宿时,住在一个房间的两个人应该相互认识。最多的能有多少个房间住宿的两个相互认识。首先题目是要问能不能分成两组,每组人之间互相不认识,每个人只与对面那部分的人认识。这个就是要判断是不是能构成一个二分图的样子。判断二分图我们使用染色法,就是规定一个点...原创 2019-09-21 09:14:26 · 199 阅读 · 0 评论 -
hdu6579 线性基
题目链接hdu6579题目就是给你你个序列,问你任意区间内去取数,要求这些数的异或和最大,还要求可以增加这个序列。从序列里面取数求异或和最大,这个是线性基模板题,但是题目要求的不一样,要的是任意区间。要怎么处理呢?就是我们开一个二维的线性基,f[i][j], i表示的是f[i]这一维的线性基是[1,i]的。但是这只是解决了右端点,但是左端点怎么办?那么其实就是对于[1,i]这个区间的线性基的...原创 2019-10-09 21:44:55 · 155 阅读 · 0 评论 -
洛谷p1220 dp
题目链接: 洛谷p1220这道题是个dp的题目,首先我们就要考虑,老张去关路灯,存不存在一种情况就是我人在3的位置,我去走到5关灯,在走到4去关4的灯。这是不可能存在的是不是,也就是说关灯只会是从已经关好灯的区间去延伸一个单位,假设我们目前在3 的位置,那么我们接下来关的下一盏灯就是2或者是4.换一种表达就是,当前已经关好灯的区间是[3,3],那么我们下一步关完灯后就只可能是[2,3]或者是[3...原创 2019-10-05 19:57:48 · 207 阅读 · 0 评论 -
洛谷p1373 DP
传送门:洛谷p1373这道题我原本的想法就是很简单的f[i][j][x][y][0/1];就是以第i,j格为终点的方案数目,可是即wa又mle ,最后看了看题解才比较了解。就是我们不去储存两个人瓶子各自有多少,而是去去一个差值,然后差值取模后相等的都是等价的,这里的取模是对k+1取模,因为瓶子差值就是[0,k],所以对k+1取模。用f[i][j][p][0/1]表示以ij结束的格子差值为p的由...原创 2019-10-04 21:25:56 · 151 阅读 · 0 评论 -
POJ1661 dp
题意:场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当Jimmy跑到平台的边缘时,开始继续下落。Jimmy每次下落的高度不能超过MAX米,不然就会摔死,游戏也会结束。设计一个程序,计算Jimmy到底...原创 2019-09-26 19:57:48 · 85 阅读 · 0 评论 -
hdu1260 DP
题意:现在有n个人要买电影票,如果知道每个人单独买票花费的时间,还有和前一个人一起买花费的时间,问最少花多长时间可以全部买完票。刚学DP,就从简单的开始做起,从这道题我们可以知道,每个人只有三种情况,如下图,f[i][1/2/3]表示第i个人选择哪种购买方式所能得到最少的钱。解释下转移方程,因为如果那个人选择了自己买,那么知道这个人所能获得的最少价值就是前面一个人(i-1)个人选择他自己买,或...原创 2019-09-26 10:25:22 · 216 阅读 · 0 评论 -
hdu5593 树dp详解!!!
题目就是给你一个n点的树,每条边权值为1,对于每个点,求出离这个点距离不超过k的点的个数,然后答案是输出每个点的答案的异或和。分析,首先他是要求每个点距离不超过k的点数,对于每个点,这个不超过距离k的点数,我们可以从下面(就是这个点的子树去找), 也可以从这个点的上方去找。我们分别去考虑。用f[i][k] 表示从i这个点往下符合条件(距离为k)的点的答案。对于每个点,先去得到他子树去找到的...原创 2019-09-22 20:50:10 · 281 阅读 · 0 评论 -
hdu1045 行列缩点+二分图匹配
题意:目标是尽可能多地在城市中设置碉堡,这样就不会有两个碉堡相互摧毁。如果没有两个碉堡在地图的同一水平行或垂直列上,除非至少有一个墙将它们分开,否则碉堡的配置是合法的。在这个问题中,我们将考虑小方形城市(最多4x4),其中包含无法穿过子弹的墙壁。下图显示了同一块板的五张图片。第一张图片是空白板,第二张和第三张图片显示合法配置,第四张和第五张图片显示非法配置。对于该板,合法配置中的最大块仓数为5;...原创 2019-09-21 21:28:18 · 150 阅读 · 0 评论 -
hdu2255 KM(带权二分图匹配)
这道题就是一个裸的带权二分图(KM)匹配模板。首先关于KM算法,我概念是看的这个视频(在2P)https://www.bilibili.com/video/av60813417/?p=2&t=316然后关于代码方面我是看的这个博客https://blog.csdn.net/frankax/article/details/81541421都是感觉非常不错。然后直接写模板就可以了。...原创 2019-09-21 16:52:43 · 150 阅读 · 0 评论 -
洛谷P1972(树状数组+离线)
题目描述HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答……因为项链实在是太长了。于是,他只好求助睿智的你,来解决这个问题。输入格式第一行:一个整数N,表示项链的长度。...原创 2019-08-19 19:42:21 · 217 阅读 · 0 评论