摘要:
思路: 写得我头脑发蒙,,, 旁边还有俩唱歌的 抓狂 (感谢lh大爷查错) 首先 1、w是s1的子串 2、w是s2的子串 这两步很好办啊~ 后缀数组一下O(n)就可以搞 重点是 这个:3、s3不是w的子串 怎么办呢 把 1、3做一发KMP 那么取一下min就好了 注意重叠的情... 阅读全文
摘要:
思路: 首先我们已经会了后缀数组求本质不同的子串个数 这道题跟那个差不多 首先我们可以知道按字典序排好的每个后缀之前包含多少本质不同的字串 就是sigma(n-sa[i]+1-ht[i]+bi[i-1]) 在这上面二分就可以求出来原串是什么了 就把两个后缀的LCP和原串的长度取个m... 阅读全文
摘要:
借鉴(抄)了一下题解…… 线段树合并的裸题吧…//By SiriusRen#include #include #include using namespace std;#define N 4000050typedef long long LL; int n,cnt,tree[N],... 阅读全文
摘要:
思路: 1.线段树合并(nlogn的) 2.splay+启发式合并线段树合并比较好写 我手懒//By SiriusRen#include #include #include using namespace std;const int N=100050;int n,m,q,a[N],... 阅读全文
摘要:
这题可以直接nth_element过去 比如这样子//By SiriusRen#include #include using namespace std;int n,a[100500];int main(){ scanf("%d",&n); for(int i=1;i#... 阅读全文
摘要:
写了一半 没了啊啊啊 重新写的 思路: 先不考虑后缀自动机 (我不会啊)那这道题只能用后缀数组了 先把原串倒一下 后缀->前缀 相当于每回在前面加了一个字母 求不同的子串个数 首先 正常的求子串个数我们是会的 SPOJ 705 但是这道题比较坑 它让你每回都... 阅读全文
摘要:
思路: f[i][a][b][c][d] 表示在第i天 昨天1矿吃的是a 前天1矿吃的是b 昨天2矿吃的是c 前天2矿吃的是d 的最优解暴力转移 哦 需要优化一下空间… 变成i%2 就好了//By SiriusRen#include #include #include usin... 阅读全文
摘要:
思路: 可以把题目转化成 给你一些沿坐标轴方向的线段 让你求交点个数 然后就线段树+扫描线 搞一搞 (线段不包含断点 最后+n 这种方式 比线段包含断点+各种特判要好写得多)//By SiriusRen#include #include using namespace std;... 阅读全文
摘要:
非递归的DFS写炸了… 交了一个递归版的 过了………..//By SiriusRen#include #include #include using namespace std;const int N=1000050;int n,nn,q,xx,yy,stk[N],in[N],o... 阅读全文
摘要:
思路: 按照从大到小排个序 维护两个数组 一个是消元后的 另一个是 按照消元的位置排的 不断 维护从大到小 (呃具体见代码)//By SiriusRen#include #include #include using namespace std;#define int lon... 阅读全文