摘要: 让蒟蒻见识到了常数大+滥用STL的危害。很久之前的Splay#include#includeusing namespace std;#define maxn 110000#define INF 2147483647int n,m,l,r,fa[maxn],c[maxn][2],val[maxn],h... 阅读全文
posted @ 2015-01-07 16:22 AutSky_JadeK 阅读(369) 评论(0) 推荐(0) 编辑
摘要: #include#includeusing namespace std;int n;char s[100001],table[]="luvletter";int main(){ scanf("%d",&n); getchar(); for(;n;--n) { gets(s); int... 阅读全文
posted @ 2015-01-06 10:10 AutSky_JadeK 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 我们二分/分块枚举答案x,暴力把除了最短的字符串以外的其他字符串的x长度子串哈希搞出来,分别扔到set里。然后暴力枚举最短的字符串的x长度字串,查看是否在全部的set里出现过。#include#include#include#includeusing namespace std;typedef un... 阅读全文
posted @ 2015-01-02 09:42 AutSky_JadeK 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 显然是块状链表的经典题。但是经典做法的复杂度是O(n*sqrt(n)*log^2(n))的,出题人明确说了会卡掉。于是我们考虑每个块内记录前n个块的权值分块。查询的时候差分什么的,复杂度就是O(n*sqrt(n))的了。插入的时候为了防止块过大,要考虑裂块(细节较多)。感谢bzoj提供O2,我的ST... 阅读全文
posted @ 2014-12-30 13:17 AutSky_JadeK 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 枚举每个位置,给每个串的前半部分一个哈希值,后半部分一个哈希值,若是它们均相等,则视为这两个串相似。每次转移之后,排序一下就行了。O(L*n*log(n))。#include#include#include#includeusing namespace std;typedef unsigned lo... 阅读全文
posted @ 2014-12-28 14:31 AutSky_JadeK 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 暴力修改,记录一段是否全部为1或0,若全是了,则不再修改。注意3211一定要判是否为0,否则会T得惨无人道。#include#includeusing namespace std;#define lson rt'9';c=getchar())if(c=='-')f=-1; for(x=0;c>... 阅读全文
posted @ 2014-12-27 22:00 AutSky_JadeK 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 教育我们做Rabin-Karp的时候一定要把模数取大?还是上溢好了。#include#includeusing namespace std;int main() { puts("100000 13"); for(int i=1;i<=100000;i++) putchar(rand... 阅读全文
posted @ 2014-12-27 16:23 AutSky_JadeK 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 引用题解:http://blog.csdn.net/wyfcyx_forever/article/details/40347425#include#includeusing namespace std;int next[1000001],n;char s[1000001];void GetFail(... 阅读全文
posted @ 2014-12-27 15:08 AutSky_JadeK 阅读(228) 评论(0) 推荐(0) 编辑
摘要: void GetFail(char P[],int __next[])//__next[i]表示s[0]~s[i-1]的前缀中,最大长度相等的前后缀是多少 { __next[0]=-1; int len=strlen(P); for(int i=0;i<len;i++) { int j=__next 阅读全文
posted @ 2014-12-27 14:46 AutSky_JadeK 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 算法就不说了,反正是基于字符串匹配的。这里比较一下kmp和Rabin-Karp算法。kmp算法。592788lizitong2462Accepted4828kb680msC++/Edit2349 B2014-03-29 19:07:02#include#include#includeusing na... 阅读全文
posted @ 2014-12-27 11:14 AutSky_JadeK 阅读(314) 评论(0) 推荐(0) 编辑
摘要: #include#include#include#include#includeusing namespace std;#define MAXN 100001typedef unsigned long long ull;const ull seed=31;ull seeds[MAXN];char s... 阅读全文
posted @ 2014-12-27 11:01 AutSky_JadeK 阅读(322) 评论(0) 推荐(1) 编辑
摘要: 倒着处理删点,就变成了加点,于是并查集。#includeusing namespace std;#define N 400001int fa[N],kill[N],rank[N],n,m,q;bool hav[N];int next[N],first[N],v[N],en,x,y,anss[N],c... 阅读全文
posted @ 2014-12-24 17:32 AutSky_JadeK 阅读(175) 评论(0) 推荐(0) 编辑
摘要: v[x]记录了x值的出现位置序列。对每个b中的元素,每次在v[b[i]]中二分。因此要记录上一次二分到了a数组的哪个位置。#include#include#includeusing namespace std;#define N 1000001vectorv[N];int x,m,n,b[N];in... 阅读全文
posted @ 2014-12-24 16:13 AutSky_JadeK 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 二分(分块)枚举 边权上限。用kruscal判可行性。#include#include#include#includeusing namespace std;int u[20001],v[20001],w1[20001],w2[20001],n,m,K,Limit;int fa[10001],ran... 阅读全文
posted @ 2014-12-23 17:26 AutSky_JadeK 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 如题。#include#include#includeusing namespace std;int Num,CH[12],f,c;inline void R(int &x){ c=0;f=1; for(;c'9';c=getchar())if(c=='-')f=-1; for(x... 阅读全文
posted @ 2014-12-21 20:16 AutSky_JadeK 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 莫队显然。然后维护转移的时候如果用树状数组,则很容易TLE。所以用权值分块维护转移。总复杂度O(m*sqrt(n))。#include#include#includeusing namespace std;int Num,CH[12],f,c;inline void R(int &x){ c=... 阅读全文
posted @ 2014-12-20 19:19 AutSky_JadeK 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 引用zky的题解:http://blog.csdn.net/iamzky/article/details/39667859每条S-T路径代表一次比赛的结果。最小割会尽量让一个人赢得最多。因为二分总是写挂,所以写了分块答案,比暴力枚举好像快不了多少。#include#include#include#i... 阅读全文
posted @ 2014-12-20 17:44 AutSky_JadeK 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 类似bzoj1221http://www.cnblogs.com/autsky-jadek/p/4174087.html只不过大学有多个,所以我们另开一个节点汇总所有'S->大学'的边,然后再把这个节点和Yi相连即可。死于初始化。#include#include#include#includeusi... 阅读全文
posted @ 2014-12-20 15:43 AutSky_JadeK 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 裸的最小路径覆盖。把每个点拆点,变成二分图。对于可以连边的点对(i,j):i->j'(1);对于任意一点i,若i点为'.':S->i(1),i'->T(1);答案为所有'.'的数量-最大流(最大匹配数)。引用证明:路径覆盖中的每条简单路径除了最后一个顶点之外都有唯一的后继和它对应;因此匹配边数就是非... 阅读全文
posted @ 2014-12-20 11:17 AutSky_JadeK 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 【法一】枚举Time(0~N*M): S->'.'(1); 'D'->T(Time); '.'->'D'(dis(用BFS预处理,注意一旦到达'D',BFS就不能继续扩展了,注意dis的初值0x7f)#include#include#includeusing namespace std;#defin... 阅读全文
posted @ 2014-12-20 09:49 AutSky_JadeK 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 原问题等价于断掉一些边,让原来所有的最短路全都无法联通S和T。先求最短路,然后把在最短路上的边(dis[u[i]]+w[i]==dis[v[i]])加入新图里,跑最小割。显然。注意是无向图。#include#include#include#includeusing namespace std;#de... 阅读全文
posted @ 2014-12-19 21:03 AutSky_JadeK 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 引用题解:最大流+费用流。第一问最大流即可。第二问为“最小费用最大流”。由题意,这一问的可转化为在上一问的“残量网络”上,扩大一些边的容量,使能从新的图中的最大流为k。那么易得:对于还有剩余流量的边,走过他们的费用为0。而“增加流量”可变为:对残留网络上的每一条边建一条容量是∞费用是w的边。这表示从... 阅读全文
posted @ 2014-12-19 17:47 AutSky_JadeK 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 几乎为“线性规划与网络流24题”中的餐巾问题。这里把S看成毛巾的来源,T看成软件公司,我们的目的就是让每天的毛巾满足要求(边满流)。引用题解:【问题分析】网络优化问题,用最小费用最大流解决。【建模方法】把每天分为二分图两个集合中的顶点Xi,Yi,建立附加源S汇T。1、从S向每个Xi连一条容量为ri,... 阅读全文
posted @ 2014-12-19 15:47 AutSky_JadeK 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 每个点拆点,分别向源/汇连a[i]的边,满足条件的相互连INF的边,答案为sum-maxflow*2。因为若有几个点不能同时被选,我们要贪心地选择其中和尽量大的部分,这可以由最小割来保证。#include#include#include#include#includeusing namespace ... 阅读全文
posted @ 2014-12-18 15:48 AutSky_JadeK 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 将每个数拆点,互相连边,然后满足条件的数对之间互相连边,跑最大费用流,答案是流量和费用分别除以2。一定要i->j、j->i都连上,否则可能会出现一个数在一边被选择了,在另一边的另一个匹配中又被选择的情况。#include#include#include#include#includeusing na... 阅读全文
posted @ 2014-12-17 15:09 AutSky_JadeK 阅读(180) 评论(2) 推荐(0) 编辑
摘要: 把牛拆点,互相连1的边。把牛的食物向牛连边,把牛向牛的饮料连边。把源点向牛的食物连边,把牛的饮料向汇点连边。要把牛放在中间,否则会造成一头牛吃了自己的食物后又去喝别的牛的饮料的情况。#include#include#include#includeusing namespace std;#define... 阅读全文
posted @ 2014-12-16 16:58 AutSky_JadeK 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 基本等同这个,只是询问的东西不大一样而已。http://www.cnblogs.com/autsky-jadek/p/4159897.html#include#include#includeusing namespace std;int Num,CH[12],f,c;inline void R(in... 阅读全文
posted @ 2014-12-15 18:11 AutSky_JadeK 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 一开始以为死于精度……调了半天发现死于long long……一、二分法:#include#include#includeusing namespace std;bool cmp(const int &a,const int &b){return a>b;}int n,a[100001],b[1000... 阅读全文
posted @ 2014-12-15 15:16 AutSky_JadeK 阅读(173) 评论(0) 推荐(0) 编辑
摘要: TMD 题意其实是与1或n相连的边只能走一次,其他可以走无限次……翻译去死。裸最大流。#include#include#include#includeusing namespace std;#define INF 2147483647#define MAXN 211#define MAXM 4030... 阅读全文
posted @ 2014-12-13 10:55 AutSky_JadeK 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题意:在树中找到一个点i,并且找到这个点子树中的一些点组成一个集合,使得集合中的所有点的c之和不超过M,且Li*集合中元素个数和最大首先,我们将树处理出dfs序,将子树询问转化成区间询问。然后我们发现,对于单一节点来说,“使得集合中的所有点的c之和不超过M,且Li*集合中元素个数和最大”可以贪心地搞... 阅读全文
posted @ 2014-12-12 15:55 AutSky_JadeK 阅读(587) 评论(0) 推荐(1) 编辑
摘要: 论某O(n*sqrt(n))的带修改区间k大值算法。首先对序列分块,分成sqrt(n)块。然后对权值分块,共维护sqrt(n)个权值分块,对于权值分块T[i],存储了序列分块的前i块的权值情况。对于区间询问,需要获得区间中每个值出现的次数,然后按权值扫O(sqrt(n)),完整的部分我们可以通过权值... 阅读全文
posted @ 2014-12-11 12:56 AutSky_JadeK 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 先用莫队算法保证在询问之间转移的复杂度,每次转移都需要进行O(sqrt(m))次插入和删除,权值分块的插入/删除是O(1)的。然后询问的时候用权值分块查询区间k小值,每次是O(sqrt(n))的。所以总共的复杂度是O(m*(sqrt(n)+sqrt(m)))的。常数极小。别的按权值维护的数据结构无法... 阅读全文
posted @ 2014-12-10 13:13 AutSky_JadeK 阅读(756) 评论(0) 推荐(0) 编辑
摘要: 结论:满足条件一:当一条边的起点和终点不在 残量网络的 一个强联通分量中。且满流。满足条件二:当一条边的起点和终点分别在 S 和 T 的强联通分量中。且满流。、网上题解很多的。 1 #include 2 #include 3 #include 4 #include 5 #include 6 usin... 阅读全文
posted @ 2014-12-09 10:44 AutSky_JadeK 阅读(190) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/autsky-jadek/p/4020296.html同bzoj2120。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int n,m,sz,sum,l[30]... 阅读全文
posted @ 2014-12-08 15:23 AutSky_JadeK 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 注意:建图的时候,一定要把旧标号相同的分开。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define MAXN 5001 7 #define MAXM 100001 8 #define INF 2147... 阅读全文
posted @ 2014-12-07 15:04 AutSky_JadeK 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define INF 2147483647 7 #define MAXN 201 8 #define MAXM 1501 9 int v[MAXM],cap[... 阅读全文
posted @ 2014-12-07 14:12 AutSky_JadeK 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #include<queue> 5 using namespace std; 6 #define MAXN 501 7 #define MAXM 50001 8 #defin 阅读全文
posted @ 2014-12-07 08:18 AutSky_JadeK 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 注意:有时加边不一定要加反向弧。 Next Array版。 阅读全文
posted @ 2014-12-06 20:22 AutSky_JadeK 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 枚举长度为m的所有段,尝试用中位数更新答案。所以需要数据结构,支持查询k大,以及大于/小于 k大值 的数的和。平衡树、权值线段树、权值分块什么的随便呢。 1 #include 2 #include 3 #include 4 using namespace std; 5 typedef long lo... 阅读全文
posted @ 2014-12-06 14:46 AutSky_JadeK 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 既然题目中的要求满足二维偏序,那么我们很自然地想到将所有东西(草和牛)都读进来之后,对一维(美味度)排序,然后在另一维(价值)中取当前最小的。于是,Splay、mutiset、权值分块什么的都支持查询后继呢。 1 #include 2 #include 3 #include 4 using name... 阅读全文
posted @ 2014-12-06 10:29 AutSky_JadeK 阅读(318) 评论(0) 推荐(0) 编辑
TVアニメ「Charlotte(シャーロット)」公式サイト TVアニメ「Charlotte(シャーロット)」公式サイト