随笔分类 - bzoj
摘要:教育我们做Rabin-Karp的时候一定要把模数取大?还是上溢好了。#include#includeusing namespace std;int main() { puts("100000 13"); for(int i=1;i<=100000;i++) putchar(rand...
阅读全文
摘要:引用题解:http://blog.csdn.net/wyfcyx_forever/article/details/40347425#include#includeusing namespace std;int next[1000001],n;char s[1000001];void GetFail(...
阅读全文
摘要:算法就不说了,反正是基于字符串匹配的。这里比较一下kmp和Rabin-Karp算法。kmp算法。592788lizitong2462Accepted4828kb680msC++/Edit2349 B2014-03-29 19:07:02#include#include#includeusing na...
阅读全文
摘要:倒着处理删点,就变成了加点,于是并查集。#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...
阅读全文
摘要:v[x]记录了x值的出现位置序列。对每个b中的元素,每次在v[b[i]]中二分。因此要记录上一次二分到了a数组的哪个位置。#include#include#includeusing namespace std;#define N 1000001vectorv[N];int x,m,n,b[N];in...
阅读全文
摘要:二分(分块)枚举 边权上限。用kruscal判可行性。#include#include#include#includeusing namespace std;int u[20001],v[20001],w1[20001],w2[20001],n,m,K,Limit;int fa[10001],ran...
阅读全文
摘要:如题。#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...
阅读全文
摘要:莫队显然。然后维护转移的时候如果用树状数组,则很容易TLE。所以用权值分块维护转移。总复杂度O(m*sqrt(n))。#include#include#includeusing namespace std;int Num,CH[12],f,c;inline void R(int &x){ c=...
阅读全文
摘要:引用zky的题解:http://blog.csdn.net/iamzky/article/details/39667859每条S-T路径代表一次比赛的结果。最小割会尽量让一个人赢得最多。因为二分总是写挂,所以写了分块答案,比暴力枚举好像快不了多少。#include#include#include#i...
阅读全文
摘要:类似bzoj1221http://www.cnblogs.com/autsky-jadek/p/4174087.html只不过大学有多个,所以我们另开一个节点汇总所有'S->大学'的边,然后再把这个节点和Yi相连即可。死于初始化。#include#include#include#includeusi...
阅读全文
摘要:裸的最小路径覆盖。把每个点拆点,变成二分图。对于可以连边的点对(i,j):i->j'(1);对于任意一点i,若i点为'.':S->i(1),i'->T(1);答案为所有'.'的数量-最大流(最大匹配数)。引用证明:路径覆盖中的每条简单路径除了最后一个顶点之外都有唯一的后继和它对应;因此匹配边数就是非...
阅读全文
摘要:【法一】枚举Time(0~N*M): S->'.'(1); 'D'->T(Time); '.'->'D'(dis(用BFS预处理,注意一旦到达'D',BFS就不能继续扩展了,注意dis的初值0x7f)#include#include#includeusing namespace std;#defin...
阅读全文
摘要:原问题等价于断掉一些边,让原来所有的最短路全都无法联通S和T。先求最短路,然后把在最短路上的边(dis[u[i]]+w[i]==dis[v[i]])加入新图里,跑最小割。显然。注意是无向图。#include#include#include#includeusing namespace std;#de...
阅读全文
摘要:引用题解:最大流+费用流。第一问最大流即可。第二问为“最小费用最大流”。由题意,这一问的可转化为在上一问的“残量网络”上,扩大一些边的容量,使能从新的图中的最大流为k。那么易得:对于还有剩余流量的边,走过他们的费用为0。而“增加流量”可变为:对残留网络上的每一条边建一条容量是∞费用是w的边。这表示从...
阅读全文
摘要:几乎为“线性规划与网络流24题”中的餐巾问题。这里把S看成毛巾的来源,T看成软件公司,我们的目的就是让每天的毛巾满足要求(边满流)。引用题解:【问题分析】网络优化问题,用最小费用最大流解决。【建模方法】把每天分为二分图两个集合中的顶点Xi,Yi,建立附加源S汇T。1、从S向每个Xi连一条容量为ri,...
阅读全文
摘要:每个点拆点,分别向源/汇连a[i]的边,满足条件的相互连INF的边,答案为sum-maxflow*2。因为若有几个点不能同时被选,我们要贪心地选择其中和尽量大的部分,这可以由最小割来保证。#include#include#include#include#includeusing namespace ...
阅读全文
摘要:将每个数拆点,互相连边,然后满足条件的数对之间互相连边,跑最大费用流,答案是流量和费用分别除以2。一定要i->j、j->i都连上,否则可能会出现一个数在一边被选择了,在另一边的另一个匹配中又被选择的情况。#include#include#include#include#includeusing na...
阅读全文
摘要:把牛拆点,互相连1的边。把牛的食物向牛连边,把牛向牛的饮料连边。把源点向牛的食物连边,把牛的饮料向汇点连边。要把牛放在中间,否则会造成一头牛吃了自己的食物后又去喝别的牛的饮料的情况。#include#include#include#includeusing namespace std;#define...
阅读全文
摘要:基本等同这个,只是询问的东西不大一样而已。http://www.cnblogs.com/autsky-jadek/p/4159897.html#include#include#includeusing namespace std;int Num,CH[12],f,c;inline void R(in...
阅读全文
摘要:一开始以为死于精度……调了半天发现死于long long……一、二分法:#include#include#includeusing namespace std;bool cmp(const int &a,const int &b){return a>b;}int n,a[100001],b[1000...
阅读全文

浙公网安备 33010602011771号
