随笔分类 -  其他OJ

摘要:【题目大意】N个盒子围成一圈。第i个盒子初始时有Ai个小球(∑Ai1则连边(s,i,Ai-1,0);若Ai=0则连边(i,t,1,0)。对任意两个盒子i,j,若Ai>1并且Aj=0,连边(i,j,∞,min(|i-j|,n-|i-j|))。求一次最小费用流即为结果。但是这样构图复杂度会很高,边数会达到O(N^2),不够聪明。更加简洁的方法是直接由每个盒子向与其相邻的两个盒子连边(i,j,∞,1),总共也才2N条,将边数降到了O(N),由TLE变成AC。以上摘自Edelwiss《网络流建模汇总》其实一开始基本上不会往那个T的方向去想。总之还是每种方案会对应一条边。 1 #include 2 阅读全文
posted @ 2013-10-09 09:25 浙西贫农 阅读(229) 评论(0) 推荐(0)
摘要:传说中的带权有向图上的中国邮路问题。【题目大意】带权有向图上的中国邮路问题:一名邮递员需要经过每条有向边至少一次,最后回到出发点,一条边多次经过权值要累加,问最小总权值是多少。(20的点,加边(s,i,Di,0);对于Di0的边(i,j),在原图中复制fij份,这样原图便成为欧拉图,求一次欧拉回路即可。以上摘自Edelweiss《网络流建模汇总》启示:这篇论文的前面还讲到一个混合图欧拉回路的问题(就是给出一张既含有有向边又含有无向边的图,问你是否能通过确定图中一些无向边的方向使得图中存在欧拉回路),这种涉及到回路的问题,都要抓住每个点的出度和入度这两个非常重要的条件来构图。 1 #inclu. 阅读全文
posted @ 2013-10-06 19:32 浙西贫农 阅读(473) 评论(0) 推荐(0)
摘要:限制增广次数的费用流。【题目大意】一个N*N的网格,每个单元都有一个价值Vi的宝物和一个高度Hi。现在ZhouGuyue要作至多K次旅行,每次旅行如下:他可以借助bin3的直升机飞到任意一个单元,之后他每次只能向相邻的且高度比当前所在格子低的格子移动。当他移动到一个边界的格子上时,他可以跳出这个网格并完成一次旅行。旅行中所到之处的宝物他可以全部拿走,一旦拿走原来的格子里就没有宝物了。问他最多能拿走价值多少的宝物。(1Hj则加边(i’’,j’,∞,0);若格子i在边界上则加边(i’’,t,∞,0)。限制增广次数小于等于K求最小费用流即可。以上摘自Edelweiss《网络流建模汇总》启示:1.增广 阅读全文
posted @ 2013-10-06 16:12 浙西贫农 阅读(346) 评论(0) 推荐(0)
摘要:传说中的凸费用流问题,对于一条有c1容量免费,超出容量部分增加的每单位流量费用为c2的边(u,v),在原图中拆成两条边(u,v,c1,0),(u,v,INF,c2)。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define maxn 1010 7 #define maxm 200010 8 #define INF 0x3f3f3f3f 9 using namespace std; 10 typedef long long LL; 11 int N,M,C,P; 12 struct MCMF{ ... 阅读全文
posted @ 2013-10-06 13:34 浙西贫农 阅读(209) 评论(0) 推荐(0)