传送门1

传送门1

Solution

两道比较裸的题。。。

复习一下最大流和费用流的模板。

Code[bzoj 2768][JLOI 2010] 冠军调查

#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}return x*f;
}
#define MN 505
#define T 500
#define S 0
#define ME 200000
#define inf 0x3f3f3f3f
struct edge{int to,w,nex;}e[ME];
int hr[MN],cur[MN],en=1;
inline void ins(int f,int t,int w)
{e[++en]=(edge){t,w,hr[f]};hr[f]=en;e[++en]=(edge){f,0,hr[t]};hr[t]=en;
}
int d[MN],q[MN],top;
bool bfs()
{memset(d,0,sizeof d);register int i,j;for(d[q[i=top=1]=S]=1;i<=top;++i)for(j=hr[q[i]];j;j=e[j].nex)if(e[j].w&&!d[e[j].to])d[q[++top]=e[j].to]=d[q[i]]+1;return d[T];
}
int dfs(int x,int f)
{if(x==T) return f;int used=0,w;for(int i=cur[x];i;i=e[i].nex){cur[x]=i;if(d[e[i].to]==d[x]+1&&e[i].w){w=dfs(e[i].to,min(e[i].w,f-used));used+=w;e[i].w-=w;e[i^1].w+=w;if(f==used) return used;}}return d[x]=-1,used;
}
int ans=0;
void solve()
{while(bfs()){memcpy(cur,hr,sizeof cur);ans+=dfs(S,inf);}
}
int main()
{register int i,x,y,n=read(),m=read();for(i=1;i<=n;++i) read()?ins(S,i,1):ins(i,T,1);while(m--) x=read(),y=read(),ins(x,y,1),ins(y,x,1);solve();return 0*printf("%d\n",ans);
}

Code[bzoj 1877][SDOI 2009]晨跑

#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}return x*f;
}
#define MN 505
#define ME 41000
#define inf 0x3f3f3f3f
struct edge{int to,w,c,nex;}e[ME];
int hr[MN],en=1,S,T;
inline void ins(int f,int t,int w,int c)
{e[++en]=(edge){t,w,c,hr[f]}; hr[f]=en;e[++en]=(edge){f,0,-c,hr[t]};hr[t]=en;
}
int d[MN],q[ME<<2],l,r;
bool inq[MN],vis[MN];
bool spfa()
{memset(d,0x3f,sizeof d);d[q[l=r=ME]=T]=0;inq[T]=true;register int i;while(l<=r){int u=q[l++];inq[u]=false;for(i=hr[u];i;i=e[i].nex)if(e[i^1].w&&d[e[i].to]>d[u]-e[i].c){d[e[i].to]=d[u]-e[i].c;if(inq[e[i].to]) continue;inq[e[i].to]=true;d[e[i].to]<=d[q[l]]?q[--l]=e[i].to:q[++r]=e[i].to;}}return d[S]!=inf;
}
ll mincost=0,maxflow=0;
int dfs(int x,int f)
{vis[x]=true;    if(x==T) return f;int used=0,w;for(int i=hr[x];i;i=e[i].nex)if(e[i].w&&d[e[i].to]+e[i].c==d[x]&&!vis[e[i].to]){w=dfs(e[i].to,min(e[i].w,f-used));used+=w;e[i].w-=w;e[i^1].w+=w;mincost+=1ll*w*e[i].c;if(used==f) return f; }return used;
}
void solve()
{while(spfa()){do{memset(vis,0,sizeof vis);maxflow+=dfs(S,inf);}while(vis[T]); }
}
int main()
{register int x,y,c,N=read(),M=read(),i;for(i=1;i<=N;++i) ins(i,i+N,1,0);while(M--) x=read(),y=read(),c=read(),ins(x+N,y,1,c);S=1+N;T=N;solve();return 0*printf("%lld %lld\n",maxflow,mincost);
}

Blog来自PaperCloud,未经允许,请勿转载,TKS!

转载于:https://www.cnblogs.com/PaperCloud/p/10248155.html

[bzoj 2768][bzoj 1877]相关推荐

  1. bzoj 2654 bzoj 3675 总结

    bzoj 2654 && bzoj 3675 总结 手动博客搬家: 本文发表于20180929 15:18:55, 原地址https://blog.csdn.net/suncongbo ...

  2. BZOJ 2768 [JLOI2010]冠军调查

    还说还剩十分钟A一道水题,然后发现和善意的投票一模一样粘个代码过去直接A... 装作自己又写了一道题. 题面 //Twenty #include<cstdio> #include<c ...

  3. bzoj 3386 bzoj 3408: [Usaco2009 Oct]Heat Wave 热浪(最短路)

    3408: [Usaco2009 Oct]Heat Wave 热浪 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 301  Solved: 223 [ ...

  4. bzoj 1143 bzoj 2718 最长反链

    题意:n个点,m条有向边,求最长反链 又到了涨姿势的时候了...(果然蒟蒻) DAG中,有如下的一些定义和性质: 链:一条链是一些点的集合,链上任意两个点x, y,满足要么 x 能到达 y ,要么 y ...

  5. bzoj 3157 bzoj 3516 国王奇遇记 —— 推式子

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3157 https://www.lydsy.com/JudgeOnline/problem.p ...

  6. 【BZOJ 3339 / BZOJ 3585 / luogu 4137】Rmq Problem / mex

    [原题题面]传送门 [题解大意] 都说了是莫队练习题. 考虑已知[l,r]区间的mex值时,如何求[l+1,r]的mex值. 比较a[l+1]与已知ans的大小,如果a[l+1]>ans或者a[ ...

  7. 随机增量法:bzoj 1336 bzoj 1337 最小圆覆盖

    1337: 最小圆覆盖 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 1170  Solved: 573 [Submit][Status][Discus ...

  8. bzoj 1786 bzoj 1831: [Ahoi2008]Pair 配对(DP)

    1786: [Ahoi2008]Pair 配对 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 899  Solved: 591 [Submit][St ...

  9. bzoj 1787 bzoj 1832: [Ahoi2008]Meet 紧急集合(倍增LCA)

    1832: [AHOI2008]聚会 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 1539  Solved: 663 [Submit][Status ...

最新文章

  1. 什么是AWS Lambda?
  2. leetcode算法题--无重复字符的最长子串
  3. 空间地理加权回归stata_xy妙妙屋丨地理加权回归和空间自相关
  4. LBaaS 实现机制 - 每天5分钟玩转 OpenStack(125)
  5. Qt 项目视图的便捷类
  6. 前端学习(2528):一个简单的vue app
  7. php atan2,atan2l - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  8. 一款功能强大的 IP 查询工具!
  9. BZOJ3835 [Poi2014]Supercomputer 【斜率优化】
  10. HTML显示日期时间代码
  11. Gps经纬度转化关系
  12. 绿色到黄色到红色的颜色渐变实现
  13. dpdk加速网络协议栈ANS用户手册
  14. [应用推荐]FreeMind自动生成系统盘的树状图(思维导图)
  15. android5.1 取消录制屏幕跳出的权限对话框
  16. centos7 修改时间、时区问题
  17. Hyper-V虚拟机安装XP系统
  18. db2iupgrade失败:DBI1205E One or more local databases cannot be upgraded
  19. SQL注入攻击以及防护
  20. JavaWeb框架(二):Servlet组件入门

热门文章

  1. 编程—休息片刻的好处
  2. 【抛砖引玉】“技术顾问” —— 老程序员的一个出路。
  3. 无法安装操作系统,An unexpected error(0) occurred at line 1768 in f:\nt2\base\boot\setup\arcdisp.c....
  4. 1600802038
  5. [Robot Framework] 怎么写动态等待?
  6. ThreadLocal深度解析
  7. 【原创】StreamInsight查询系列(十)——基本查询操作之联接
  8. 企业中常见的推荐系统架构(附交流视频和PPT下载链接)
  9. 【报告分享】2019中国青年理想城报告(含城市青和力TOP100).pdf
  10. 从实操教学到赛题演练,腾讯专家亲授TI-ONE平台操作攻略!