摘要:
题意:给定一张无向图,图中每条边均为白色或黑色,求有K个白色节点的边权和最小的生成树,数据保证有解 题解: 比较直观的想法是跑一个最小生成树,然后不断换边使得白边的数量等于K 然而我们可以给所有白边加上一个值,使其被选的几率增大或减小,而赋的值可以通过二分来找到。 #include <cstdio> 阅读全文
posted @ 2017-02-27 23:14
WDZRMPCBIT
阅读(185)
评论(0)
推荐(0)
摘要:
题意:给定一张无向图,图中每个边都有a,b两种边权,求一条从S到T的路径,使得路径中(a的最大值+b的最大值)最小 法一:我们先将边按a排序,每次加入一条边,然后将加入的边的两端入队,跑一边SPFA求从1到达每个节点路径上的最长的一条边的长度。这样需要跑M边SPFA,然而有一个优化——我们可以直接将 阅读全文
posted @ 2017-02-27 23:11
WDZRMPCBIT
阅读(193)
评论(0)
推荐(0)
摘要:
题意:求一个无向图的最小生成树与次小生成树的边权和是否相等 题解: 首先有一个性质,就是最小生成树上的任意两点的距离就是其在原图中的最短路,严格的证明我不会- -,但是由于Prim Dijkstra算法的过程完全相同,所以这个性质比较显然(不会证就不会证呗为何还要找理由QAQ) 还要一条性质就是无向 阅读全文
posted @ 2017-02-27 23:06
WDZRMPCBIT
阅读(165)
评论(0)
推荐(0)
摘要:
题意:求恰好经过K条边的最短路 题解:根据Floyd的性质,如果我拿一开始给出的两个边权矩阵(只经过一条边的最短路的邻接矩阵)跑Floyd,得到的一定是只经过两条边的最短路的邻接矩阵(普通的Floyd是用求出的最短路来更新最短路而非用初始矩阵),同理用两条边的邻接矩阵一定能得到四条边的,因此N条边的 阅读全文
posted @ 2017-02-27 23:04
WDZRMPCBIT
阅读(216)
评论(0)
推荐(0)
摘要:
题意:给订一张无向图,求一条S到T的路径,使得路径上的最大边权与最小边权的比值最小 题解:将边由小到大排序,暴力枚举最小边,然后借鉴Kruskal的思想,由小到大加入每一条大于初始边的边,检验S与T是否连通,若连通则更新答案,枚举下一条边。 #include <cstdio> #include <c 阅读全文
posted @ 2017-02-27 23:02
WDZRMPCBIT
阅读(169)
评论(0)
推荐(0)
摘要:
题意:给定N个变量和K个约束条件,形如x1==x2,x1-x2≥a……,求$\sum\limits_{i = 1}^N {{x_i}}$的最小值 题解: 首先差分约束系统是指形如:x[i]-x[j]<d[k]的形式的几个方程联立得到的方程组,其中d均为已知量,x均为未知量。(至于等于好嘛……d--不 阅读全文
posted @ 2017-02-27 23:00
WDZRMPCBIT
阅读(188)
评论(0)
推荐(0)
摘要:
题意:求每个节点v的$\sum\limits_{s \ne v,t \ne v} {\frac{{{C_{s,t}}(v)}}{{{C_{s,t}}}}}$,其中${C_{s,t}}(v)$为从s到t经过v的最短路的数量,${C_{s,t}}$为s到t的最短路的总数 题解:跑一边Floyd然后枚举判 阅读全文
posted @ 2017-02-27 22:57
WDZRMPCBIT
阅读(168)
评论(0)
推荐(0)
摘要:
题意:给定一张图,有可以将K条路径的花费变为0,求从1到N的最短路 题解: 分层图+最短路水过。 我们把原图复制K份,平行的放在一起(就像饼干一样一层层的),然后给每个图编号1 2 3……K,然后对于原图中每一条边(x,y),在i的x和i+1的y之间连一条边权为0的边,然后在这K个图上做最短路即可。 阅读全文
posted @ 2017-02-27 22:52
WDZRMPCBIT
阅读(166)
评论(0)
推荐(0)
摘要:
题意:给定一个图,图中有保护关系(u,v)表示到v之前必须先到一次u,求从1到N的最短路 题解: 定义d1[i]为直接到达i的最短距离,这个的更新和普通的Dijkstra一样 定义d2[i]为解除i的所有保护的最短距离(不一定要在i结束),这个更新起来很简单,每经过一个节点就将其所控制的城市的发生器 阅读全文
posted @ 2017-02-27 22:50
WDZRMPCBIT
阅读(159)
评论(0)
推荐(0)
摘要:
题意:给定N个正整数ai,求[L,R]中能凑出多少个数 题解: 首先取最小的ai,如果k*ai+x合法,则(k+n)ai+x均合法(其中L<=(k+n)ai+x<=R) 因此对于每一个x,我们只需要求出最小的k,然后就能算出所有的合法解的数量。 至于算k,用最短路就好 #include<map> # 阅读全文
posted @ 2017-02-27 22:48
WDZRMPCBIT
阅读(176)
评论(0)
推荐(0)
摘要:
题意:(这题没图不好说……大家还是自己去看吧) 题解: 首先有一点需要注意,就是题面中a和b数组搞混了…… 像势能分析那样,我们每花费一定金额b[i][j]就相当于得到了a[i][j]的势能,这样我们建图,图中每一个点均由花费(边权)、横纵坐标、势能四个量决定,显然转移的时候有: 势能==0:向下一 阅读全文
posted @ 2017-02-27 22:44
WDZRMPCBIT
阅读(204)
评论(0)
推荐(0)
摘要:
题意:给定限制条件(a,b)表示a必须在b之前,求所有合法序列中,小的数尽量在前面的方案 题解:首先我们根据限制条件建反向图,然后在反向图上求字典序最小的拓扑序(队列改为堆),逆序输出即可。 #include <queue> #include <functional> #include <cstdi 阅读全文
posted @ 2017-02-27 22:42
WDZRMPCBIT
阅读(187)
评论(0)
推荐(0)
摘要:
题意:给定两种限制:1、编号为i的航班必须在ki+1之前起飞 2、(a,b)表示a必须在b之前起飞。求:1、一个合法起飞序列 2、每个航班在所有合法起飞顺序中,最早的起飞时间。问题保证有解 题解:首先按照第二个限制条件建图,那么第一问随便跑一个拓扑序就好,关键在第二问,我们枚举每一个飞机,假定该飞机 阅读全文
posted @ 2017-02-27 22:37
WDZRMPCBIT
阅读(132)
评论(0)
推荐(0)
摘要:
题意:给定N个有A C G T组成的字符串,求长度为L的仅由A C G T组成的字符串中有多少个是不含给定的N个字符串的题解: 首先我们把所有的模式串(给定的DNA序列)建Trie,假定我们有一个匹配串,并且在匹配过程到S[i]这个字符时匹配到了Trie上的某个节点t,那么有两种可能: 匹配失败:t 阅读全文
posted @ 2017-02-27 22:28
WDZRMPCBIT
阅读(147)
评论(0)
推荐(0)
摘要:
题意:给定三个操作:1、在当前字符串的末尾添加一个字符c 2、在当前字符串的末尾删除一个字符 3、记录当前字符串并对其标号。再给出N组询问,每组询问需回答第x个字符串在第y个字符串中出现的次数 题解: 首先按照如下规则建Trie,设当前节点为t,第i个字符串的结尾在Trie中的位置为mark[i]: 阅读全文
posted @ 2017-02-27 22:24
WDZRMPCBIT
阅读(126)
评论(0)
推荐(0)
摘要:
题意:给定N个字符串,设S为N个字符串首尾相连组成的字符串,查询每个字符串在S中出现的次数。 题解: 首先我们在构造Trie的时候,将构造过程中经过的节点的cnt全部++,此时cnt中记录该模式串被多少个模式串包含。 如果A为B的子串,B为C的子串,显然A也是C的子串,因此我们从下往上回溯,每回溯到 阅读全文
posted @ 2017-02-27 22:03
WDZRMPCBIT
阅读(154)
评论(0)
推荐(0)
摘要:
题意:给定一个字符串,维护:1、修改某个位置的字符 2、查询从p、q位置开始相同字串的长度 3、在某个位置后面插入一个字符 题解:因为需要支持修改所以很容易想到用平衡树,每个节点维护该节点子树所构成的字串的Hash值,修改和插入不用多说,查询我们二分答案,然后在Splay上查询即可。 #includ 阅读全文
posted @ 2017-02-27 21:58
WDZRMPCBIT
阅读(151)
评论(0)
推荐(0)
摘要:
题意:给定N个字符串,求这N个字符串中有几对字符串有且仅有一位不同 题解:首先双哈希存下来,枚举删除哪一位,枚举每一个字符串删除后的哈希值,对哈希值排序之后看有多少个相同的,每组大小为n的相同字符串集对答案的贡献为$C_n^2$ #include <cstdio> #include <cstring 阅读全文
posted @ 2017-02-27 21:50
WDZRMPCBIT
阅读(131)
评论(0)
推荐(0)
摘要:
请不要吐槽为什么这么快刷了这么多题……我最近只是在复习以前做过的题,所以把以前的解题报告转移过来QAQ,所以有些图片会有CSDN的水印,毕竟我快要懒死了 这个blog应该长期使用了,欢迎各位神犇莅临指点本蒟蒻。原博客 阅读全文
posted @ 2017-02-27 00:49
WDZRMPCBIT
阅读(130)
评论(0)
推荐(0)
摘要:
题意:给定一个字符串,求最短的循环节使之循环后能构成这个字符串 题解: 根据next的性质,如果长度为L的字符串next[L]=i,则S[i+k-1]==S[i-(L-i+1)+k-1],同时我们不断的拆分下去,直到最小的一部分,这最小的一部分一定是和L-i+1到L相同的,也就是说如果最小的那一部分 阅读全文
posted @ 2017-02-27 00:46
WDZRMPCBIT
阅读(175)
评论(0)
推荐(0)
摘要:
题意:给定一个字符串,求字符串S的前i个字符构成的子串,既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠的最长子串的长度。 题解: 一开始看错题了,以为是求最长的满足要求的前后缀,结果样例都搞不出来,直到看了别人的题解才顿悟QAQ 顿悟就顿悟了,以前写的0角标开始的next数组next[0]= 阅读全文
posted @ 2017-02-27 00:43
WDZRMPCBIT
阅读(178)
评论(0)
推荐(0)
摘要:
题意:给定一棵树,求树中长度为三的倍数的路径条数 题解:定义c[i]为一颗子树中每个节点到根的距离%3等于i的路径数量,和poj1741一样,我们只需要找出只在一颗子树中的路径,就是c[1]*c[2]*2+c[0]*c[0] #include <cstdio> #include <cstring> 阅读全文
posted @ 2017-02-27 00:36
WDZRMPCBIT
阅读(135)
评论(0)
推荐(0)
摘要:
题意:给定一棵树,求树中长度小于等于K的路径条数。 题解: 分治重在思想,没有固定的算法——对于本题中某一子树上的任意一条路径,其要么是经过该子树的根,要么不经过,不经过的情况分治到子树上,我们只用考虑经过子树的根的情况。 由于经过了根节点,所以该路径的起始点一定是在根节点的两颗子树上,但直接求解方 阅读全文
posted @ 2017-02-27 00:34
WDZRMPCBIT
阅读(146)
评论(0)
推荐(0)
摘要:
题意:给定一个数列,每次交换两个数后,输出序列中逆序对的数量。 题解: 比树套树神马的好写了多了,虽然时间理论上应该慢一些,但是绝不会MLE 首先我们离散化,由于交换(x,y)只会对(x,y)之间的数产生影响,因此我们讨论x<i<y a[i]<a[x] --ans a[i]>a[x] ++ans a 阅读全文
posted @ 2017-02-27 00:32
WDZRMPCBIT
阅读(143)
评论(0)
推荐(0)
摘要:
题意:给定一个颜色序列,维护:1、单点修改 2、区间查询不同颜色的种数 题解: 定义f[i]为i左边第一个和i颜色相同的位置,用分块来维护f。 询问:看区间中有多少个位置的f[i]<l 更新:暴力枚举p左右最近的与p颜色相同的位置,更新即可 #include <cmath> #include <cs 阅读全文
posted @ 2017-02-27 00:27
WDZRMPCBIT
阅读(183)
评论(0)
推荐(0)
摘要:
题意:给定一个数列,维护:1、单点修改 2、查询区间第k大 题解: 找个代码debug网上全是树套树。 然而还是喜欢这么写分块,开个结构体什么的看起来很一目了然不是吗…… 先把每个块排序 修改:二分找到修改的位置在块中的位置,然后移动到修改后应该在的块中的位置。 查询:确定上下界后二分答案,看每个答 阅读全文
posted @ 2017-02-27 00:23
WDZRMPCBIT
阅读(153)
评论(0)
推荐(0)
摘要:
题意:给定一个数列,维护:1、[L,R]之间所有的数+=W 2、求[L,R]中大于等于C的数的数量 题解:更新用add标记,头尾俩块暴力重构;查询将每个块排序然后二分找。 #include <cmath> #include <ctime> #include <cstdio> #include <cs 阅读全文
posted @ 2017-02-27 00:21
WDZRMPCBIT
阅读(134)
评论(0)
推荐(0)
摘要:
题意:给定N,M,求$\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^M {lcm(i,j)} }$,多组询问 题解: 设$F(x,y) = \sum\limits_{i = 1}^x {\sum\limits_{j = 1,\gcd (i,j) = 1}^y 阅读全文
posted @ 2017-02-27 00:18
WDZRMPCBIT
阅读(196)
评论(0)
推荐(0)
摘要:
题意:T组询问,每组询问给出N,M,a,有一张N×m的数表,其第i行第j列(1≤i≤N,1≤j≤M)的数值为能同时整除i和j的所有自然数之和。给定a,计算数表中不大于a的数之和。 题解: 首先我们预处理出来所有数的约数和,也就是F函数,定义g(i)=1到N和1到M中gcd含有i这个因子的组数,这玩意 阅读全文
posted @ 2017-02-27 00:02
WDZRMPCBIT
阅读(174)
评论(0)
推荐(0)

浙公网安备 33010602011771号