bzoj 1570: [JSOI2008]Blue Mary的旅行
Description
Input
Output
Sample Input
1 2 1
2 3 5
3 1 4
Sample Output
HINT
约定:
2 <= N <= 50
1 <= M <= 2450
1 <= T <= 50
1 <= X,Y <= N
X != Y
1 <= Z <= 50
Source
做过紧急疏散这个题就是一眼题了,考虑二分答案然后按时间拆点用判满流来check即可;
注意二分大上界为n+tot,因为tot个人排队走即可,一开始设为n*tot狂T不止;
//MADE BY QT666
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
typedef long long ll;
const int N=200050;
const int Inf=19260817;
int head[N],to[N],nxt[N],s[N],S,T,cnt=1,level[N],vis[N],q[N*10],F,n,m,tot;
void Addedge(int x,int y,int z) {
to[++cnt]=y,s[cnt]=z,nxt[cnt]=head[x],head[x]=cnt;
}
void lnk(int x,int y,int z){
Addedge(x,y,z);Addedge(y,x,0);
}
bool bfs(){
for(int i=S;i<=T;i++) level[i]=0,vis[i]=0;
int t=0,sum=1;
q[0]=S,level[S]=1,vis[S]=1;
while(t<sum){
int now=q[t++];
if(now==T) return 1;
for(int i=head[now];i;i=nxt[i]){
int y=to[i];
if(level[y]==0&&s[i]){
level[y]=level[now]+1;
q[sum++]=y;
}
}
}
return 0;
}
int dfs(int now,int maxf){
if(now==T) return maxf;
int ret=0;
for(int i=head[now];i;i=nxt[i]) {
int y=to[i],f=s[i];
if(level[y]==level[now]+1&&f) {
int minn=min(maxf-ret,f);
f=dfs(y,minn);
s[i]-=f;s[i^1]+=f;ret+=f;
if(ret==maxf) break;
}
}
if(!ret) level[now]=0;
return ret;
}
void Dinic(){
while(bfs()) F+=dfs(S,Inf);
}
struct data{
int to,lim;
};
vector<data> p[100];
struct date{
int id[2505];
}g[100];
bool check(int mid){
memset(head,0,sizeof(head));cnt=1;int tt=0;
for(int i=1;i<=n;i++){
for(int j=0;j<=mid;j++) g[i].id[j]=++tt;
}
S=0,T=tt+1;
for(int i=1;i<=n;i++){
for(int j=0;j<p[i].size();j++){
int x=p[i][j].to,lim=p[i][j].lim;
for(int k=0;k<mid;k++){
lnk(g[i].id[k],g[x].id[k+1],lim);
}
}
for(int k=0;k<mid;k++) lnk(g[i].id[k],g[i].id[k+1],Inf);
}
lnk(S,g[1].id[0],tot);
for(int i=0;i<=mid;i++) lnk(g[n].id[i],T,Inf);
F=0;Dinic();
return F==tot;
}
int main(){
scanf("%d%d%d",&n,&m,&tot);
for(int i=1;i<=m;i++){
int x,y,z;scanf("%d%d%d",&x,&y,&z);
p[x].push_back((data){y,z});
}
int l=0,r=n+tot,ans=0;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid)) r=mid-1,ans=mid;
else l=mid+1;
}
printf("%d\n",ans);
return 0;
}
bzoj 1570: [JSOI2008]Blue Mary的旅行的更多相关文章
- BZOJ 1570: [JSOI2008]Blue Mary的旅行( 二分答案 + 最大流 )
二分答案, 然后对于答案m, 把地点分成m层, 对于边(u, v), 第x层的u -> 第x+1层的v 连边. 然后第x层的u -> 第x+1层的u连边(+oo), S->第一层的1 ...
- bzoj1570: [JSOI2008]Blue Mary的旅行(二分+网络流)
1570: [JSOI2008]Blue Mary的旅行 题目:传送门 题解: get到拆点新姿势,还是做题太少了...ORZ 因为每天就只能有一个航班,那就不能直接连了,所以要拆点(然后就被卡住了) ...
- [BZOJ 1568][JSOI2008]Blue Mary开公司
[BZOJ 1568][JSOI2008]Blue Mary开公司 题意 \(n\) 次操作, 维护一个一次函数集合 \(S\). 有两种操作: 给定 \(b\) 和 \(k\), 向 \(S\) 中 ...
- 【BZOJ1570】[JSOI2008]Blue Mary的旅行 动态加边网络流
[BZOJ1570][JSOI2008]Blue Mary的旅行 Description 在一段时间之后,网络公司终于有了一定的知名度,也开始收到一些订单,其中最大的一宗来自B市.Blue Mary决 ...
- 数据结构(线段树):BZOJ 1568 [JSOI2008]Blue Mary开公司
1568: [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 602 Solved: 214[Submit ...
- BZOJ 1567: [JSOI2008]Blue Mary的战役地图( 二分答案 + hash )
二分答案, 然后用哈希去判断... ------------------------------------------------------------------------- #include ...
- bzoj 1568 [JSOI2008]Blue Mary开公司 超哥线段树
[JSOI2008]Blue Mary开公司 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 1808 Solved: 639[Submit][Sta ...
- BZOJ 1567: [JSOI2008]Blue Mary的战役地图
1567: [JSOI2008]Blue Mary的战役地图 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1011 Solved: 578[Sub ...
- BZOJ 1567: [JSOI2008]Blue Mary的战役地图 矩阵二维hash
1567: [JSOI2008]Blue Mary的战役地图 Description Blue Mary最近迷上了玩Starcraft(星际争霸) 的RPG游戏.她正在设法寻找更多的战役地图以进一步提 ...
随机推荐
- js之ECMAscript
1.基本数据类型和一些运算 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- 【epub.js|翻译|原创】开源中间件epub.js的使用及其中文文档
epub是最流行的电子书规范之一,网络上对于Java Web有不少合适的方法来解析和呈现,但是关于epub.js的介绍比较少(尽管github上已经2K星了),更多的是概念性的内容,如: epub.j ...
- 实践作业2:黑盒测试实践——选择并下载测试工具 Day 2
1.选择工具为Katalon Studio 基于 Selenium 和 Appium 框架,Katalon Studio隐藏幕后的所有技术复杂性,并提供友好的用户界面与手动模式(用户可以拖放,选择关键 ...
- 算法提高 9-3摩尔斯电码 map
算法提高 9-3摩尔斯电码 时间限制:1.0s 内存限制:256.0MB 问题描述 摩尔斯电码破译.类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文.请不要使用"z ...
- nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37
一:开始Nginx的SSL模块 1.1 Nginx如果未开启SSL模块,配置Https时提示错误 1 nginx: [emerg] the "ssl" parameter requ ...
- 【Spring】多数据源导致自动化配置失败问题
一.问题描述 笔者根据需求在开发过程中,需要在原项目的基础上(单数据源),新增一个数据源C,根据C数据源来实现业务.至于为什么不新建一个项目,大概是因为这只是个小功能,访问量不大,不需要单独申请个服务 ...
- Maven快速指南
Maven是Apache基金会提供的项目管理工具, 其采用项目对象模型(Project Object Model, POM)描述项目配置, 并使用生命周期模型管理构建过程中各种操作. POM mave ...
- python中namedtuple介绍
namedtuple:namedtuple类位于collections模块,有了namedtuple后通过属性访问数据能够让我们的代码更加的直观更好维护.namedtuple能够用来创建类似于元祖的数 ...
- TCP的十一种状态与三次握手分析(有图)
我们知道TCP是面向连接的,我们只知道有连接断开,其实内部还有一些比较复杂的状态.去了解各个状态之间的切换有助于我们更加深入的了解TCP.下面我们就来分析各个状态. 1.如下图示(图源百度)图中显示出 ...
- CAN通讯的总结
1.CAN通讯有套国际标准,套协议版本号,种故障状态,种数据帧类型,种总线错误类型. 2.CAN的国际标准有两种ISO11898和ISO11519. 3.CAN2.0协议分为A版和B版两种,A版协议仅 ...