摘要: 传送门 题意 N个点M条边的有向图 每个点有点权 从某一个结点出发 问能获得的最大点权和 一个点的点权最多被计算一次 N<=500000 M<=500000 思路 先tarjan缩点,然后就形成一个dag,无环,所以直接spfa求最长路就行。 也可以先缩点,然后拓扑排序 + dp 搞。 代码 1 # 阅读全文
posted @ 2017-05-15 20:56 zht467 阅读(124) 评论(0) 推荐(0)
摘要: 传送门 就是个单调队列+DP嘛。 ——代码 1 #include <cstdio> 2 3 const int MAXN = 1000001; 4 int n, m, h = 1, t = 1, ans = ~(1 << 31); 5 int q[MAXN], a[MAXN], f[MAXN]; 6 阅读全文
posted @ 2017-05-15 11:32 zht467 阅读(169) 评论(0) 推荐(0)
摘要: 传送门 这种水题没必要搞线段树了,单调队列就行啊。 ——代码 1 #include <cstdio> 2 3 const int MAXN = 2000001; 4 int n, m, h = 1, t = 1; 5 int a[MAXN], q[MAXN]; 6 7 int main() 8 { 阅读全文
posted @ 2017-05-15 10:56 zht467 阅读(177) 评论(0) 推荐(0)
摘要: 传送门 团队里的hash水题,数据小的不用hash都能过。。 也就是前缀hash,后缀hash,再比较一下就行。 ——代码 1 #include <cstdio> 2 #include <cstring> 3 #define ULL unsigned long long 4 5 int n, m, 阅读全文
posted @ 2017-05-15 10:41 zht467 阅读(249) 评论(0) 推荐(0)
摘要: 传送门 看着很吓人,其实就是个树链剖分模板。 可支持操作: 1.将节点 x 到 根 的路径上的值都变成 1 2.将以节点 x 为根的子树的值都变成 0 1A爽~ ——代码 1 #include <cmath> 2 #include <cstdio> 3 #include <cstring> 4 #i 阅读全文
posted @ 2017-05-15 09:40 zht467 阅读(161) 评论(0) 推荐(0)