博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CTSC 1999 家园 【网络流24题】星际转移
阅读量:6037 次
发布时间:2019-06-20

本文共 1844 字,大约阅读时间需要 6 分钟。

直接把每一个点,每一天拆成一个点。

然后每个点到下一天连$inf$的边。

然后把飞船的路径用容量为飞船容量的边连接。

然后跑网络流判断是否满流。

#include 
#include
#include
#include
#include
using namespace std;#define F(i,j,k) for (int i=j;i<=k;++i)#define D(i,j,k) for (int i=j;i>=k;--i)#define inf 0x3f3f3f3f#define maxn 500005int n,m,k,p[25],flag=0,S=0,T=maxn-1,ans=0;int sta[25][25],num[25];int h[maxn],to[maxn],ne[maxn],fl[maxn],fr[maxn],en=0;int hash[25][500],cnt=0,dis[maxn];queue
q;void add(int a,int b,int c){ to[en]=b;fr[en]=a;ne[en]=h[a];fl[en]=c;h[a]=en++; to[en]=a;fr[en]=b;ne[en]=h[b];fl[en]=0;h[b]=en++;}bool tell(){ memset(dis,-1,sizeof dis); while (!q.empty()) q.pop(); dis[S]=0;q.push(S); while (!q.empty()) { int x=q.front();q.pop(); for (int i=h[x];i>=0;i=ne[i]) { if (fl[i]>0&&dis[to[i]]==-1) { dis[to[i]]=dis[x]+1; q.push(to[i]); } } } if (dis[T]==-1) return false; return true;}int zeng(int k,int now){ if (k==T) return now; int r=0; for (int i=h[k];i>=0&&now>r;i=ne[i]) if (dis[k]+1==dis[to[i]]&&fl[i]>0) { int t=zeng(to[i],min(now-r,fl[i])); fl[i]-=t;fl[i^1]+=t;r+=t; } if (!r) dis[k]=-1; return r;}int main(){ memset(h,-1,sizeof h); scanf("%d%d%d",&n,&m,&k); F(i,1,m) { scanf("%d",&p[i]); scanf("%d",&num[i]); F(j,0,num[i]-1) { scanf("%d",&sta[i][j]); if (sta[i][j]==-1) sta[i][j]=n+1; } } F(i,0,n+1) F(j,0,205) hash[i][j]=++cnt; add(S,hash[0][0],k); add(hash[n+1][0],T,inf); for (int z=0;z<=200;++z) { int tmp; F(i,0,n+1) add(hash[i][z],hash[i][z+1],inf); F(i,1,m) add(hash[sta[i][z%num[i]]][z],hash[sta[i][(z+1)%num[i]]][z+1],p[i]); add(hash[n+1][z+1],T,inf); while (tell()) while (tmp=zeng(S,inf)) ans+=tmp; if (ans==k) { flag=1; printf("%d\n",z+1); break; } } if (!flag) printf("%d\n",0);}

  

转载于:https://www.cnblogs.com/SfailSth/p/6743731.html

你可能感兴趣的文章
挖掘你不知道的windowsxp中的带宽潜能
查看>>
Software Engineering 招聘要求
查看>>
【转载】InstallAnyWhere自动化制作安装包的知识
查看>>
69、iSCSI共享存储配置实战
查看>>
文本编程
查看>>
乔布斯走了。你还期待苹果吗?
查看>>
优先级
查看>>
Tomcat与Web服务器、应用服务器的关系
查看>>
用DFS实现全排列 & 八皇后问题
查看>>
深度学习博客
查看>>
Android总结篇系列:Android Service
查看>>
Android dumpsys命令的使用
查看>>
Linux Kernel系列一:开篇和Kernel启动概要
查看>>
BZOJ 2756: [SCOI2012]奇怪的游戏 网络流/二分
查看>>
master + worker模式的node多核解决框架——node-cluster
查看>>
Android如何实现超级棒的沉浸式体验
查看>>
使用node打造自己的命令行工具方法教程
查看>>
Express代理中间件问题与解决方案
查看>>
||和&&返回什么?
查看>>
linux在文件中查找指定字符串,然后根据查找结果来做进一步的处理
查看>>