参考资料: 1.元旦集训的课件已经很好了 http://files.cnblogs.com/files/candy99/dp.pdf 2.http://www.cnblogs.com/MashiroSky/p/6009685.html [一] 对于一类转移方程: f[i]=max{a[i]*b[j]+c[i]+d[j]} a[i]和c[i]是开始求解前就知道常数,b[j]和d[j]知道f[j]后就知道有关 可以使用斜率优化(不是这个形式就尽量往这个形式化) {以下讨论不严格区分优于和不差于} […
题目链接: [十二省联考2019]字符串问题 首先考虑最暴力的做法就是对于每个$B$串存一下它是哪些$A$串的前缀,然后按每组支配关系连边,做一遍拓扑序DP即可. 但即使忽略判断前缀的时间,光是连边的时间就会爆炸,显然不能暴力连边. 对于前缀不好解决,可以将字符串翻转然后变成判断是否是后缀. 可以发现对于后缀自动机的$parent$树,每个节点是子树内所有节点的后缀. 那么我们可以利用$parent$树来优化建图过程,将树上每个点向子节点连边. 对于每个$A$串和$B$串在后缀自动机上匹配出对应…
题意 一个 \(n\) 点 \(m\) 边的有向图,还有一棵 \(k\) 个节点的 trie ,每条边上有一个字符串,可以用 trie 的根到某个节点的路径来表示.每经过一条边,当前携带的字符串就会变成边上的字符串,经过一条边的代价是边权+边上的字符串和当前字符串的 lcp,问从 1 号点走到所有点的最小代价. \(n,m\le 50000, k\le 20000\) 分析 将边看成点,如果有 \(e1 \rightarrow x\rightarrow e2\) , 连边 \(e1 \right…
Solution 一个点向一个区间内的所有点连边, 可以用线段树优化建图来优化 : 前置技能传送门 然后就得到一个有向图, 一个联通块内的炸弹可以互相引爆, 所以进行缩点变成$DAG$ 然后拓扑排序. 由于一次引爆的炸弹 一定是一个连续的区间内, 所以只需要记录左右边界, 并将左右边界转移给能到达它的联通块. 没写手工栈一直RE的我心里$mmp$啊. 为什么网上的题解都不写手工栈$QAQ$ Code #include<cstdio> #include<cstring> #inclu…
[题目]#6354. 「CodePlus 2018 4 月赛」最短路 [题意]给定n个点,m条带权有向边,任意两个点i和j还可以花费(i xor j)*C到达(C是给定的常数),求A到B的最短距离.\(n \leq 10^5,m \leq 5*10^5\). [算法]异或优化建图+Dijkstra 正常建边O(n^2),与其考虑特殊边的处理不如考虑优化n^2的建边方案.一个点x到另一个点y的代价是由每个改变的数位得到的,所以枚举所有点x的每个数位j,从x向\(x \ \ xor \ \ 2^j\…
题目链接 https://codeforces.com/problemset/problem/1007/D 题解 其实这道题本身还是挺简单的,这里只是记录一下 2-SAT 的前缀优化建图的相关内容. 由于问题的本质是给定许多二元集合,判断是否能从每一个二元集合中选出一个元素,使得所有选出的元素合法,因此考虑使用 2-SAT 解决该问题. 不难发现,使用 2-SAT 解决该问题的复杂度瓶颈在于建图. 我们为每一种颜色 \(i\) 对应的两条路径赋上编号.首先,我们需要为每一条树边记录包含该条边的所…
[BZOJ3681]Arietta Description Arietta 的命运与她的妹妹不同,在她的妹妹已经走进学院的时候,她仍然留在山村中.但是她从未停止过和恋人 Velding 的书信往来.一天,她准备去探访他.对着窗外的阳光,临行前她再次弹起了琴.她的琴的发声十分特殊.让我们给一个形式化的定义吧.所有的 n 个音符形成一棵由音符 C ( 1 号节点) 构成的有根树,每一个音符有一个音高 Hi .Arietta 有 m 个力度,第 i 个力度能弹出 Di 节点的子树中,音高在 [Li,R…
题面 传送门 题解 去看\(shadowice\)巨巨写得前后缀优化建图吧 话说我似乎连线段树优化建图的做法都不会 //minamoto #include<bits/stdc++.h> #define R register #define ll long long #define pb push_back #define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i) #define fd(i,a,b) for(R int i=(a),I=(b)-1…
Description ​ 数轴上有 n 个旗子,第 ii 个可以插在坐标 xi或者 yi,最大化两两旗子之间的最小距离. Input ​ 第一行一个整数 N. ​ 接下来 N 行每行两个整数 xi,yi Output ​ 一个整数表示答案. Sample Input Sample #1 3 1 3 2 5 1 9 Sample #2 5 2 2 2 2 2 2 2 2 2 2 Sample #3 22 93 6440 78 6647 862 11 8306 9689 798 99 801 52…
题目描述 在一条直线上有 N 个炸弹,每个炸弹的坐标是 Xi,爆炸半径是 Ri,当一个炸弹爆炸时,如果另一个炸弹所在位置 Xj 满足:  Xi−Ri≤Xj≤Xi+Ri,那么,该炸弹也会被引爆.  现在,请你帮忙计算一下,先把第 i 个炸弹引爆,将引爆多少个炸弹呢?  输入 第一行,一个数字 N,表示炸弹个数.  第 2∼N+1行,每行 2 个数字,表示 Xi,Ri,保证 Xi 严格递增.  N≤500000 −10^18≤Xi≤10^18 0≤Ri≤2×10^18 输出 一个数字,表示Sigma…