随笔分类 -  算法竞赛进阶指南

摘要:题意:有n个点,每个点有一定数量的人和面包,对于每条边有容量c限制可以经过的人数,且在第二个人以后经过路径会有概率p破坏网络,问在所有人都拿到面包的情况下求网络破坏概率的最小值。 思路:因为最小费用最大流的应用问题为 给定网络D=(V,A,C) 每一条弧(vi,vj)上,除了已给容量Cij外,还给了 阅读全文
posted @ 2020-02-05 14:37 Ldler 阅读(189) 评论(0) 推荐(0)
摘要:题目链接:https://www.spoj.com/problems/COT/en/ 题意:求树上A,B两点路径上第K小的数 思路:主席树实际上是维护的一个前缀和,而前缀和不一定要出现在一个线性表上。 比如说我们从一棵树的根节点进行DFS,得到根节点到各节点的距离dist[x]——这是一个根-x路径 阅读全文
posted @ 2019-11-28 00:50 Ldler 阅读(278) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5919 题意:求给定一个区间,在对前边一个答案进行运算后得到一个新的区间,然后问这个区间里面有k个不同的数,把它们第一次出现的位置从小到大排序,问第k/2个位置是什么; 思路:从后往前插入,同时在插入前删除之前插入 阅读全文
posted @ 2019-11-26 22:45 Ldler 阅读(117) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=6579 线性基https://blog.csdn.net/a_forever_dream/article/details/83654397 模板https://blog.csdn.net/u013534123/ar 阅读全文
posted @ 2019-09-23 19:16 Ldler 阅读(190) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=6582 思路:找到最短路核心边建图,跑一遍最小割,最短路核心边的定义为设起点到每个点的最短距离为d[i],每个点到终点的最短路为d2[i],如果一条边起点为u,终点为v,边权为w,若d[u]+d2[v]+w==d[ 阅读全文
posted @ 2019-09-23 18:17 Ldler 阅读(187) 评论(0) 推荐(0)
摘要:题目链接 思路:针对一个数组的操作,即对一个区间。可以用线段树去进行维护。初始化建树,叶子节点的值为1,维护每段区间上各个元素的乘积sum。M yi,将第i个元素的值改为yi。N di,将第di个元素的值改为1。输出即查询区间[1,Q]的sum值。也就是变成了单点更新、区间查询问题。 #includ 阅读全文
posted @ 2019-08-25 09:32 Ldler 阅读(134) 评论(0) 推荐(0)
摘要:题意:给N个数,求一个区间内的众数。 思路:分块,分成sqrt(t*log2(n)))块,先预处理出每一个块到每个块中的众数,离散化,然后把询问区间分三段,第一段为l到l所在块的终止,第二段为每一段块,第三段为r块的开始到r,然后第二段用预处理的数组就能得出,第一三段,二分vector记录的下标求众 阅读全文
posted @ 2019-08-22 20:22 Ldler 阅读(110) 评论(0) 推荐(0)
摘要:题目链接 题意:已知每个星星的坐标和亮度,求用一个宽w,高h的矩形能圈住的星星的亮度总和最大是多少。 思路:我们把每个星星置为w,h矩形的左下角,这样围才是最多的情况。然后将每个这样的搞出来并把其矩形赋权为其亮度,可以发现当两个矩形重合的地方就可以用亮度加起来 表示,因为在那个地方做宽w高h的矩形两 阅读全文
posted @ 2019-08-17 16:01 Ldler 阅读(211) 评论(0) 推荐(0)
摘要:题目链接 题意:给n个矩形到一个平面上,求他们的总面积。 思路:将他们的x坐标从小到大排序,然后根据对于当前x坐标而言他们的y坐标区间进行相应的维护某些变化,这种解题思路就是扫描线。对于这题,我们要维护的是y区间的覆盖情况。 然后用覆盖的总长度去乘以当前两个x之间的距离,再全部加起来就是答案。对于如 阅读全文
posted @ 2019-08-17 15:40 Ldler 阅读(171) 评论(0) 推荐(0)
摘要:题目链接 题意: 给定长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1、“1 x y”,查询区间 [x,y] 中的最大连续子段和,即 MAXx≤l≤r≤y{∑r,i=l A[i]}。 2、“2 x y”,把 A[x] 改成 y。 对于每个查询指令,输出一个整数表示答案。 思路: 用线 阅读全文
posted @ 2019-08-17 15:24 Ldler 阅读(225) 评论(0) 推荐(0)
摘要:题目链接 题意:给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1、“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d。 2、“Q l r”,表示询问 A[l],A[l+1],…,A[r] 的最大公约数(GCD)。 对于每个询问,输出一个整数表示答案。 阅读全文
posted @ 2019-08-15 18:57 Ldler 阅读(580) 评论(0) 推荐(0)
摘要:题意:给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1、“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d。 2、“Q l r”,表示询问 数列中第 l~r 个数的和。 对于每个询问,输出一个整数表示答案。 思路:用树状数组进行区间操作。用一个数组b 阅读全文
posted @ 2019-08-13 20:03 Ldler 阅读(227) 评论(0) 推荐(0)
摘要:题目链接 题意:有n头奶牛,已知它们的身高为 1~n 且各不相同,但不知道每头奶牛的具体身高。现在这n头奶牛站成一列,已知第i头牛前面有Ai头牛比它低,求每头奶牛的身高。 思路:第k头牛的身高hk为1~n中除掉hk+1,hk+2……hn中第Ak+1小的。所以可以维护一个01序列,当找其中的第ai+1 阅读全文
posted @ 2019-08-13 19:03 Ldler 阅读(269) 评论(0) 推荐(0)
摘要:题目链接 题意:给你n个点分别为(i,y[i]) 如果三个点(i,yi),(j,yj),(k,yk)(i,yi),(j,yj),(k,yk)满足1≤i<j<k≤n且yi>yj,yj<yk1≤i<j<k≤n且yi>yj,yj<yk,则称这三个点构成V图腾; 如果三个点(i,yi),(j,yj),(k, 阅读全文
posted @ 2019-08-13 11:08 Ldler 阅读(245) 评论(0) 推荐(0)
摘要:题目链接 题意:给出n个点,再给出n-1条路,想一口气从1走完n个点的最小距离。 思路:好像它不构成环!md没看清题目,所以说每次遍历完全部的点后,最短的路就是每条边的距离*2减去最长路的距离。 所以简单的dfs求最长路。 #include<cstring> #include<algorithm> 阅读全文
posted @ 2019-08-13 09:38 Ldler 阅读(188) 评论(0) 推荐(0)
摘要:思路:写了这题https://www.cnblogs.com/2462478392Lee/p/11343747.html就很容易理解,并想出思路了。开一个3*n的数组,将x与y的同类,捕食者,和被捕食做扩展域, 然后利用其中的关系做并查集,每一种情况均有三种。当x与y为同类时,同类同类,x的捕食者与 阅读全文
posted @ 2019-08-13 09:07 Ldler 阅读(292) 评论(0) 推荐(0)
摘要:题目链接 题意:有一个01串S,长度为n,一个人说出k个关于01串的回答,描述S[l~r] 中有奇数个1还是偶数个1。依次看,判断他到第几个问题都是可靠的回答。 思路:首先n很大要离散化,然后因为很容易想到如果S[l,r]为奇数,则S[1,r]为偶数,S[1,l-1]为奇数,或者S[1,r]为奇数, 阅读全文
posted @ 2019-08-13 08:57 Ldler 阅读(407) 评论(0) 推荐(0)
摘要:题目链接 题意:给你n个战舰,第i个战舰初始都在第i列上,现在有两种操作:M i j,把i列的战舰按原有顺序依次接到j列尾端,C i j,查询i与j号战舰之间隔几个战舰, 如果未在一列输出-1。 思路:把并查集稍微改一下就行了,用一个数组记录隔几个,还用一个数组记录每一列的当前容量。 #includ 阅读全文
posted @ 2019-08-13 08:21 Ldler 阅读(150) 评论(0) 推荐(0)
摘要:题目链接 题意:给你n个商品,商品的利润和商品的过期时间,商品必须在过期时间内卖才能算利润,每天只能卖一件商品,问利润最大值。 思路:用并查集+贪心的思路,先给商品从大到小排序,然后选择过期时间的根节点,再将根节点和根节点-1的时间merge,当根节点不为0,累计加上利润 最后求得最大值。因为过期时 阅读全文
posted @ 2019-08-12 10:44 Ldler 阅读(260) 评论(0) 推荐(0)
摘要:题目链接 题意:给你n对x,y,你知道xy是否相等,问能否构成合法序列。n<=1e6,x,y<=1e9. 思路:很明显是一个并查集的题目,当xy相等时为一个集合。需要注意的是因为xy很大所以要离散化, 我用的是map离散化,刚开始用迭代器t了!!! #include<cstdio> #include 阅读全文
posted @ 2019-08-12 10:09 Ldler 阅读(225) 评论(0) 推荐(0)