jzoj5331 【NOIP2017提高A组模拟8.23】壕游戏
来源:互联网 发布:ipadapp下载不了软件 编辑:程序博客网 时间:2024/05/17 20:25
题面
分析
这题面tmd太有迷惑性了,比赛的时候完全没有想到费用流。
考虑到k只有200,尝试费用流(思想类似可撤销贪心? )
一次一次增广,每次spfa能跑过去。 每走过一条边,给他的边更新一下贡献。
Demo
#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int N=1e3+10,M=8*2e4+10;int add[M];int to[M],f[M],cost[M],final[N],tot,nex[M],from[M];int n,m,k,s;int S,T;int pre[N],dis[N],ans;void _link(int x,int y,int l,int c,int a) { to[++tot]=y, nex[tot]=final[x], final[x]=tot; add[tot]=a, cost[tot]=c, f[tot]=l; from[tot]=x;} void link(int x,int y,int l,int c,int add) {_link(x,y,l,c+add,add), _link(y,x,0,-c,add);}int Q[N*100],head,tail,vis[N];void spfa() { memset(dis,127,sizeof dis); head=tail=0; dis[S]=0, Q[++tail]=S; while (head<tail) { int x=Q[++head]; vis[x]=0; for (int i=final[x]; i; i=nex[i]) { int y=to[i]; if (f[i] && dis[x]+cost[i]<dis[y]) { dis[y]=dis[x]+cost[i]; pre[y]=i; if (!vis[y]) { Q[++tail]=y; vis[y]=1; } } } }}void go() { for (int x=pre[T]; x; x=pre[from[x]]) { ans+=cost[x]; f[x]-=1, f[x^1]+=1; cost[x]+=add[x]; cost[x^1]-=add[x]; }}int main() { freopen("game.in","r",stdin); // freopen("game.out","w",stdout); scanf("%d %d %d %d",&n,&m,&k,&s); tot=1, S=n+1, T=S+1; link(S,1,k,0,0); for (int i=1; i<=s; i++) { int u; scanf("%d",&u); link(u,T,k,0,0); } for (int i=1; i<=m; i++) { int x,y,a,b,c; scanf("%d %d %d %d %d",&x,&y,&a,&b,&c); link(x,y,c,b,a); } int cnt=0; while (spfa(), dis[T]!=dis[0]) go(), ++cnt; if (cnt<k) printf("-1\n"); else printf("%d",ans);}
阅读全文
0 0
- jzoj5331 【NOIP2017提高A组模拟8.23】壕游戏
- 5331. 【NOIP2017提高A组模拟8.23】壕游戏 费用流 动态连边
- 【NOIP2017提高A组模拟8.23】密码
- 【jzoj5306】【NOIP2017提高A组模拟8.18】【棋盘游戏】
- 【JZOJ5332】【NOIP2017提高A组模拟8.23】密码
- 5333. 【NOIP2017提高A组模拟8.23】大新闻
- A【NOIP2017提高组模拟12.18】
- 【JZOJ4928】【NOIP2017提高组模拟12.18】A
- 【NOIP2017提高组模拟12.18】A
- 【JZOJ4928】【NOIP2017提高组模拟12.18】A
- 【NOIP2017提高A组模拟7.7】图
- 【NOIP2017提高A组模拟7.13】abcd
- 区间【NOIP2017提高A组模拟7.10】
- 【NOIP2017提高A组模拟8.22】密码
- 【NOIP2017提高A组模拟8.24】早苗
- 【NOIP2017提高A组模拟8.24】提米树
- 空【NOIP2017提高A组模拟8.24】
- 【NOIP2017提高A组模拟8.25】影子
- redis学习
- hdu6170-多看几遍之DP&递推&字符串-Two strings
- c# 如何调用非托管函数
- ImportError: No module named 'pip._vendor.retrying'
- JVM参数设置、分析
- jzoj5331 【NOIP2017提高A组模拟8.23】壕游戏
- 测试图片
- Array Nesting 问题及解法
- Sublime Text 3 配置文件详解
- java面试题---请用多线程写死锁
- 关于静态资源压缩技术
- Selenium Webdriver元素定位的八种常用方式
- 【2017-08-22】 Java基础复习记录
- request.getParameter乱码