摘要:
维护每一个原本的点和加入他的最后一个点,妥妥的 1 /* 2 ID:WULALA 3 PROB:bzoj1058 4 LANG:C++ 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #define N 50000814 #define M15 #define mod16 #define mid(l,r) ((l+r) >> 1)17 #define INF 1e918 using namespace std;19 20 int n,m,tot,l[N], 阅读全文
摘要:
我觉得题名应该改为:关于库的正确使用语法练习。 1 /* 2 ID:WULALA 3 PROB:bzoj1208 4 LANG:C++ 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #define N 15 #define M16 #define mod 100000017 #define mid(l,r) ((l+r) >> 1)18 #define INF 0x7fffffff19 using namespace std;20 阅读全文
摘要:
裸最小生成树。。。一开始看是SCOI想应该没这么简单。结果真尼玛这么简单。。好意思!! 1 /* 2 ID:WULALA 3 PROB:bzoj1083 4 LANG:C++ 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #define N 308 14 #define M 10008 15 #define mod16 #define mid(l,r) ((l+r) >> 1)17 #define INF 0x7ffffff18 using namesp 阅读全文
摘要:
尼玛这道题一开始我printf(“Yse\n”)调了我半个小时,最后还是葱娘给看出来的(英语渣给跪了Orz)这道题我莫名其妙地只想了一会儿(要知道我前一天才会的匈牙利,还是自学的!!),当时觉得我自己叼的跟坨翔样的同行同列的点无论经过多少次变换人仍然同行或同列,所以题目可转换为能不能找到n个互相不同行或同列的点。然后二分图匹配,将行和列分别看成一个点集,每有一个‘1’的点就把他的行和列连一条边,看每一行能不能找到一个列与之匹配。 1 /* 2 ID:WULALA 3 PROB:bzoj1059 4 LANG:C++ 5 */ 6 #include 7 #include 8 #include.. 阅读全文
摘要:
第一次做环套树的题这道题题目中貌似是有向边,实际上想一想就知道是无向的。因为一个骑士觉得另一个骑士丑他们俩就走不到一起。所以整个图实际上是一个无向环套树森林。对于每一棵环套树,先dfs找环,找到环以后断环为链并将断开的两个点强制其中一个点为根且不选做一次树形DP,对另一个点做同样操作。取两次结果最大值加入ans 1 /* 2 ID:WULALA 3 PROB:bzoj1040 4 LANG:C++ 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #includ... 阅读全文
摘要:
tarjan强连通分量求缩点重构图,出度为0的点若只有一个则输出其代表强连通分量的大小,否则无解。因为一旦出度为0就没人被他认为长得帅 1 /* 2 ID:WULALA 3 PROB:bzoj1051 4 LANG:C++ 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #define N 10008 14 #define M 50008 15 #define mod 16 #define mid(l,r) ((l+r) >> 1) ... 阅读全文
摘要:
傻逼题需要辩?找第一个比n大的2^k数输出k就是。5分钟A掉这道题代码都懒得贴了 阅读全文
摘要:
一开始还以为用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 阅读全文
摘要:
一开始看错题意了!!没注意到整个数列是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 #... 阅读全文
摘要:
公式不难推而且推出公式来以后就是一个裸快速幂了。。个人觉得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 阅读全文
摘要:
这道题是一道很简单的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 ... 阅读全文