摘要:
普通莫队:「BZOJ2038」小Z的袜子 带修改莫队:「BZOJ2120」数颜色 树上莫队:「UOJ58」[WC2013]糖果公园 阅读全文
摘要:
这道题就是 「BZOJ1070」[SCOI2007]修车 的加强版 如果一开始把全部边连上会T 优化的方法是只连用到过和下一次增广可能用到的边。 阅读全文
摘要:
最大流费用流二合一 注意跑费用流用的图要保留跑完最大流后的反向边 阅读全文
摘要:
二维偏序问题 网上某篇博客讲三维偏序时拿这题举了例子 于是我辛辛苦苦码了一个三维偏序CDQ分治挂了N发后才A 然后冷静分析了一下发现是二维偏序啊! 然后又发现既然是二维偏序那么一发树状数组就可以水过啊!! 好气呀! 三维偏序CDQ分治版 二维偏序CDQ分治版 阅读全文
摘要:
CDQ分治模板 注意三元组完全相等的情况 阅读全文
摘要:
用CDQ分治实现了一下树状数组的功能,初步了解了CDQ分治的基本流程。 常数大概是树状数组的一倍吧。。 CDQ分治: 左区间只处理修改,右区间只处理询问。 即,考虑左区间的修改对右区间的询问产生的影响。 阅读全文
摘要:
又臭又长的点分治+树上乱搞 阅读全文
摘要:
相当于求边权和为3的倍数的路径条数 阅读全文
摘要:
点分治 感觉像线性数据结构上的二分 或者说线性数据结构上的二分就是点分治的特殊情况 阅读全文
摘要:
矩阵树定理 注意模数不是质数,不能用逆元 用了一种类似辗转相除的方法,非常巧妙 阅读全文
摘要:
高斯消元模板 需要判断无解和多解 阅读全文
摘要:
把能坐在一起的连边,求出点双连通分量,再对每个点双连通分量判一下是否存在奇环。 阅读全文
摘要:
边双连通分量模板 求出边双连通分量,缩点后成为一个树。 若要使得任意一棵树,在增加若干条边后,变成一个双连通图,那么 至少增加的边数 =( 这棵树总度数为1的结点数 + 1 )/ 2 阅读全文
摘要:
1 #include 2 #define ll long long 3 using namespace std; 4 const int N=510; 5 int n,T,ans1,cnt,siz,dfn[N],low[N],timer; 6 ll ans2; 7 bool vis[N],iscut[N],viscut[N]; 8 struct Edge{ 9 int ... 阅读全文
摘要:
建出虚树 两遍dp求出虚树上的各点被哪个点管辖 再对虚树上的每一条边计算贡献 阅读全文
摘要:
朴素算法O(n^3) 可用四边形不等式优化到O(n^2) 1 #include 2 using namespace std; 3 const int N=210,oo=2e9; 4 int n,a[N],f[N][N],p[N][N],ans1=oo,ans2; 5 int main(){ 6 scanf("%d",&n); 7 for(int i=1;if[j][k... 阅读全文
摘要:
求平均时间最小就是求总时间最小 假设每个顾客对应的技术人员已经分配好了 那么技术人员在修某一辆车时对答案的贡献就是 time × 在排队的人数 所以可以想到把技术人员拆成n个点{mi1,mi2 ,……,min } 对于每个顾客,向mij连一条容量为1,花费为 time*j 的边 求这个二分图的最 阅读全文
摘要:
1 #include 2 #define ll long long 3 using namespace std; 4 const int N=10010,maxn=10000; 5 int n,a[N],u[N],p[N],totp; 6 ll f[N]; 7 bool isp[N]; 8 inline ll calc(ll k){return k*(k-1)*(k-2)*(k-... 阅读全文
摘要:
1 #include 2 #define myp pair 3 #define mp make_pair 4 using namespace std; 5 const int N=30,N2=900,dx[4]={-1,0,1,0},dy[4]={0,1,0,-1},oo=2e9; 6 int n,m,d,tot,super_s,super_t,h[N][N],sum; 7 inl... 阅读全文
摘要:
建图很巧妙。 1 #include 2 #define ll long long 3 using namespace std; 4 const int N=4010; 5 const ll oo=3e18; 6 int tot,n,m,f,s,p,super_s,super_t; 7 struct Edge{ 8 int from,to; 9 ll flow,ca... 阅读全文