理论1A。 //没删debug的文件读入。。 傻逼题。 先求出来每条边两侧的三角形,然后枚举边,根据叉积判断三角形位置,建图,拓扑排序。 1 #include <bits/stdc++.h> 2 #define pii pair<int,int> 3 using namespace std; 4 t ...
分类:
其他好文 时间:
2019-03-04 12:45:09
阅读次数:
160
思路 显然endpos的大小就对应了对应子串的出现次数,所以快速求出endpos的大小,然后用它更新对应子串长度(minlen[i]~maxlen[i])的答案即可 endpos的大小可以拓扑排序求出,发现suflink构成了一棵树,每个点代表的串都是孩子的后缀,所以$$endpos[x]\ge\s ...
分类:
其他好文 时间:
2019-03-04 09:43:36
阅读次数:
178
思路 题目要求求出有多少个不同的子串出现 因为后缀自动机每个状态存储的是连续的后缀,所以一个状态对应的子串个数就是maxlen[x] minlen[x]+1 代码 cpp include include include include using namespace std; const int M ...
分类:
其他好文 时间:
2019-03-04 09:26:47
阅读次数:
174
思路 后缀数组的板子题,注意后缀数组的rank[]数组是通过位置找到对应排名的,sa[]是通过排名找到位置的,height[i]记录的是sa[i]和sa[i+1]之间的lcp 不要写错了就行了 代码 ...
分类:
编程语言 时间:
2019-03-03 20:51:01
阅读次数:
201
hihocoder-1931-最短管道距离 #1931 : 最短管道距离 #1931 : 最短管道距离 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在一张2D地图上有N座城市,坐标依次是(X1, Y1), (X2, Y2), ... (XN, YN)。 现在H国要修 ...
分类:
其他好文 时间:
2019-03-02 14:52:38
阅读次数:
196
一.定义 拓扑排序是将有向无环图(DAG)中的顶点进行线性排序,且该序列满足以下两个条件: 1.每个顶点出现且仅出现一次; 2.如果A有一条有向边到达B,那么在排序后的序列中A一定在B前面。 二.实现方法 拓扑排序的具体实现步骤如下(<u,v>表示一条u到v的有向边): 1.找到当前DAG入度为0的 ...
分类:
编程语言 时间:
2019-02-28 18:07:04
阅读次数:
226
link:https://codeforces.com/contest/1131 题意: 给定一些大小比较,输出排名。 思路: 这道题我用的是拓扑排序,又因为有等于号的存在,我用了并查集。 结束后这道题惨遭fst,因为我拓扑排序本应只放入一个集合的代表点,但是我放入了多次。 #include <al ...
分类:
其他好文 时间:
2019-02-24 11:03:50
阅读次数:
163
这个题有点意思,正常写法肯定会T,然后需要优化。先用拓扑排序重构一遍树,然后进行一个非常神奇的操作:把每个点放在他的食物的lca上,然后计算的时候直接dfs全加上就行了。为什么呢,因为假如你的食物的lca死了,你就很自然的死了。这个题还要加一个超级源点,一开始我没加只拿了20分。但是不知道为什么,后 ...
分类:
编程语言 时间:
2019-02-23 01:08:11
阅读次数:
202
2 hdu 4109 求关键路径(最长路)。 解 1. 用最短路算法,把 2. 拓扑排序 3 zoj 1508 有若干个区间 $[a_i,b_i]$ ,现在请找到一个整数集合 $Z$ ,使得 $|Z∩[a_i,b_i]|=c_i$ 。 差分约束。 解 差分约束建边: 若 $x_1+c≥x_2$ ,则 ...
分类:
其他好文 时间:
2019-02-22 10:34:49
阅读次数:
190
拓扑排序是一种判断是否是单向无环图的一种方法。 开一个足够容纳节点个数的统计入度的数组 deg[],每次读完边之后统计入度的大小。 1.一个(queue)队列用来存放初始入度为0的边。 2.每次读出队头,并让与对头相连的节点deg[q.front()]--,判断其值为0的话就入队。 3.只要队列不为 ...
分类:
编程语言 时间:
2019-02-20 09:48:01
阅读次数:
181