摘要:
一定要仔细算内存,,,又少写一个零。。 1 #include 2 3 using namespace std; 4 5 template 6 struct Edge 7 { 8 struct Edge_base { int to,next,w; }e[_m]; int cn... 阅读全文
摘要:
首先,设f[x]表示x天能获得的A券最大值,有动规方程: $f[i]=max\{f[j]*A[i]+f[j]*B[i]/R[j]\}*R[i]/(R[i]*A[i]+B[i])$, 设 $jf[k]$ $\Rightarrow (f[j]/R[j]-f[k]/R[k])/(f[j]-f[k])... 阅读全文
摘要:
啃了一天论文,发现CDQ分治的原理其实很简单,大概就是这样的一类分治:将左右区间按一定规律排序后分开处理,递归到底时直接计算答案,对于一个区间,按照第二关键字split成两个区间,先处理左区间,之后因为整个区间是有序的,就可以根据左区间来推算右区间的答案,最后递归处理右区间即可。拿此题做比方,先把全... 阅读全文
摘要:
手动画了整张图,,算是搞懂了吧,, 1 #include 2 3 #define INF 0x3f3f3f3f 4 5 using namespace std; 6 7 template 8 struct Edge 9 { 10 struct Ed... 阅读全文
摘要:
就是bzoj1070的加强版,数据规模扩大了n倍,这样要是一次把所有边都加进去的话就爆炸了,,所以使用单路增广,增广过一条边后在加入下一条边。 //By hzwer 1 #include 2 #include 3 #include 4 5 #define inf 0x7fffffff 6 #de... 阅读全文
摘要:
把每个工人拆成N个点。记为A[i,j]表示第i个工人修倒数第j辆车.每个车跟所有N*M个工人拆出的点连边。流量为1,费用为$time[i,j]*k$。源和每辆车连边,N*M个点和汇连边,流量都为1,费用同为0。 1 #include 2 #include 3 #include 4 #i... 阅读全文
摘要:
bzoj状态里有两种,一种时间是个位数,一种是四位数,我就是四位数的那种,,,估计都是看了hzwer.. 1 #include 2 3 #define INF 0x3f3f3f3f 4 5 using namespace std; 6 7 template 8 s... 阅读全文
摘要:
题意:有一个n*m的方阵,里面的数字未知,但是我们知道如下约束条件:每一行的数字的和每一列的数字的和某些格子有特殊的大小约束,用大于号,小于号和等于号表示问:是否存在用正数填充这个方阵的方案,满足所有的约束,若有,输出之,否则输出IMPOSSIBLE。就是首先建立一个图,源点到每个行的边的容量上下界... 阅读全文
摘要:
m方枚举,并查集O(1)维护,傻逼题,,被自己吓死搞成神题了。。。 1 #include 2 3 using namespace std; 4 5 struct tri { int x,y,z; bool operator vec;10 11 int get_anc(const i... 阅读全文
摘要:
这样的题解只能舔题解了,,,qaq清橙资料里有。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 using namespace std; 10 1... 阅读全文
摘要:
和上一道题一模一样,但是这次是三次方,这样每次对答案的贡献中含有二次项,求期望是线性运算,不能直接平方,平方的期望不等于期望的平方。对于这个平方也要递推计算。 1 #include 2 3 using namespace std; 4 5 double p[110000],g1[1100... 阅读全文
摘要:
【转】dp求期望的题。题意:一个软件有s个子系统,会产生$n$种$bug$。某人一天发现一个$bug$,这个$bug$属于某种$bug$,发生在某个子系统中。求找到所有的$n$种$bug$,且每个子系统都找到$bug$,这样所要的天数的期望。需要注意的是:$bug$的数量是无穷大的,所以发现一个$b... 阅读全文
摘要:
和之前一样考虑这个音符时x还是o,如果是x,是否是新的连续一段,对答案的贡献是多少$(a^2-{(a-1)}^2)$,然后递推就可以了。 1 #include 2 3 using namespace std; 4 5 char str[310000]; 6 long double ... 阅读全文
摘要:
可以说是点分治第一题,之前那道的点分治只是模模糊糊,做完这道题感觉清楚了很多,点分治可以理解为每次树的重心(这样会把数分为若干棵子树,子树大小为log级别),然后统计包含重心的整个子树的值减去各个子树的值,这样算出的就是与这个重心有关的情况的答案,比如这道题,求路径,那么就考虑在重心所在的子树中所有... 阅读全文
摘要:
概率dp第一题,开始根本没搞懂,后来看了09年汤可因论文才基本搞懂,关键就是递推的时候做差比较一下,考虑新加入的情况对期望值的贡献,然后推推公式(好像还是不太会推qaq...) 1 #include 2 3 using namespace std; 4 5 int n,m; 6 long... 阅读全文
摘要:
高斯消元解异或方程组 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 using namespace std;11 12 int n,m,Ans;... 阅读全文
摘要:
//BY HZWER 1 #include 2 #include 3 4 using namespace std; 5 6 inline int read() 7 { 8 int x=0,f=1;char ch=getchar(); 9 while(ch'9... 阅读全文
摘要:
后缀数组+Manacher 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 using namespace std; 10 11 long long ... 阅读全文
摘要:
暴力直接解异或方程组,O(n^6)无法接受,那么我们考虑把格子分块,横着和竖着分别分为互不影响的块,这样因为障碍物最多不超过200个,那么块的个数最多为2*(800+200)=2000个,最后用bitset优化即可。 1 #include 2 3 using namespace std; ... 阅读全文
摘要:
根据题意,设$3n$次比较中胜了$w$次,负了$l$次,平了$d$次,所有场次中胜了$W$次,负了$L$次,平了$D$次。如果一场赢了,那么$w-l$就会$+1$,相同地,$W-L$也会$+1$;如果输了一场$w-l$就会$-1$,$W-L$也会$-1$。另外,再一局中如果有一次比较平了,那么这一场... 阅读全文