摘要: 一开始还以为用2-SAT。。愣了几分钟才发现是二分图匹配,用匈牙利算法找匹配碰到一个不能匹配的就退出就可以了。 1 /* 2 ID:WULALA 3 PROB:bzoj1191 4 LANG:C++ 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #define N 100814 #define M 100815 #define mod16 #define mid(l,r) ((l+r) >> 1)17 #define INF 0x7ffffff18 us 阅读全文
posted @ 2014-01-06 13:51 乌拉拉979 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 一开始看错题意了!!没注意到整个数列是1~n的一个排列!很水的一道题,找到b在数列中的位置设为point,比b大的赋值为-1,比b小的赋值为1;然后求出sum[i,point]的值出现了几次记为lfre[sum[i,point]]++; ans += lfre[sum[i,point]]*rfre[-sum[i,point]];由于c++数组不能是负数,所以稍微处理一下 1 /* 2 ID:WULALA 3 PROB:bzoj1303 4 LANG:C++ 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #... 阅读全文
posted @ 2014-01-06 13:30 乌拉拉979 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 公式不难推而且推出公式来以后就是一个裸快速幂了。。个人觉得HNOI2008最水的题 1 /* 2 ID:WULALA 3 PROB:bzoj1008 4 LANG:C++ 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #define N 14 #define M15 #define mod 10000316 #define mid(l,r) ((l+r) >> 1)17 #define INF 0x7ffffff18 using namespace st 阅读全文
posted @ 2014-01-06 13:20 乌拉拉979 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 这道题是一道很简单的DP,方程很容易列出来,只不过要优化,因为n^2过不了。膜拜了一下搞神的《浅析1D1D动态规划的优化(zzx)》既可以用斜率优化也可以用单调性优化。单调性证明就不说了。斜率优化还不太懂所以只写了单调性优化 1 /* 2 ID:WULALA 3 PROB:bzoj1010 4 LANG:C++ 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #define N 5000814 #define M15 #define mod16 #define ... 阅读全文
posted @ 2014-01-06 13:14 乌拉拉979 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 嗯,就是这样,不急功近利才是一个好coder必备的素质 阅读全文
posted @ 2014-01-05 21:25 乌拉拉979 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 这道题整整搞了我5天。。。。用到了数列的插入,删除和查询第K大写的第一道平衡树题。。可以用各种平衡树和线段树来写,不失为一道极佳的平衡树练手题(据说树状数组也可以??Orz)一开始是用splay,splay网上的code大部分都用了指针我根本看不懂。后来找葱娘的ACcode用数组写的才总算看懂一点。。我理解了一晚上,写了一上午,调了一下午加晚上。。葱娘的代码就是神,一开始我还以为要用到区间修改,后面发现葱娘用一个变量记录增量就可以了(Orz!!)附上单旋SPLAYcode,这道题数据比较水,双旋单旋差不多 1 /* 2 ID:WULALA 3 PROB:splay bzoj1503 4... 阅读全文
posted @ 2014-01-05 19:15 乌拉拉979 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 真不知道bzoj为什么要把这么难的题放第一题,就这道题弄得我好久都不敢刷bzoj。。一道很明显的网络流题,最大流最小割定理只不过用网络流是过不了的,因为数据范围过大但由于这是一个平面图,于是可以另辟蹊径详情请搜:周冬《两极相通——浅析最大—最小定理在信息学竞赛中的应用》 1 #include 2 #include 3 #include 4 using namespace std; 5 const int N = 1003; 6 const int M = 2000005; 7 const int inf = 0x3f3f3f3f; 8 int head[M]; 9 struc... 阅读全文
posted @ 2014-01-05 19:14 乌拉拉979 阅读(233) 评论(0) 推荐(0) 编辑
摘要: prufer编码的应用: 1 var 2 a:array[1..10000]of longint; 3 su,p:array[1..1000]of longint; 4 b:array[1..10000]of boolean; 5 ans:array[1..10000]of longint; 6 i,j,m,n,s,k,w,sum,c:longint; 7 procedure add(t,d:longint); 8 var 9 i:longint;10 begin11 for i:=1 to s do12 while t mod su[i]=0 do13 ... 阅读全文
posted @ 2014-01-05 19:11 乌拉拉979 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 一道群论题。。要用到Burnside引理这里copy一下别人写的题解好了。。介绍一种组合数学中的Pólya计数法、Burnside定理。群给定一个集合G={a,b,c,…}和集合G上的二元运算,并满足:(a) 封闭性:"a,bÎG, $cÎG, a*b=c。(b) 结合律:"a,b,cÎG, (a*b)*c=a*(b*c)。(c) 单位元:$eÎG, "aÎG, a*e=e*a=a。(d) 逆元:"aÎG, $bÎG, a*b=b*a=e,记b=a-1。则称集合G在运算*之下 阅读全文
posted @ 2014-01-05 19:10 乌拉拉979 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 这道题还算比较水。。spfa预处理从第i天到第j天的可行最短路存为t[i][j],然后直接dp。f[i] 代表到第i天的最小费用f[i] = min(f[i],min(t[1][i]*i,f[j]+k+t[j+1][i]*(i-j))) 1 /* 2 ID:zsy99021 3 PROB:bzoj1003 4 LANG:C++ 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #define N 108 14 #define M 28 ... 阅读全文
posted @ 2014-01-05 19:09 乌拉拉979 阅读(240) 评论(0) 推荐(0) 编辑