Description

在幻想乡,河城荷取是擅长高科技工业的河童。荷取的得意之作除了光学迷彩外,还有震动整个幻想乡的巨型人形『非想天则』。不过由于人形太过巨大,所以为它充能是一件很麻烦的事。人形一共有N个电能池,编号1..N。其中前L个电能池(即编号为1..L的电能池)连接着外部充能接口,而编号为N的电能池连接着动力炉核心。在N个蓄能池之间有M条单向管道,每条管道有一个激活代价cost和电能传输极限limit。当激活度达到某个值时,所以激活代价小于等于这个值的管道都会被激活,但是每一条管道只能够最多传送limit个单位的电能。外部接口到电能池和电能池到动力炉核心的管道传输没有限制并且激活代价为0。现在荷取想往动力炉核心输入至少K个单位的电能,求需要的最小激活度。

Input

第1行:4个正整数N,M,L, K 
第2..M+1行:4个整数,u,v,limit,cost,表示一条由u到v的管道,传输极限limit,激活代价为cost

Output

第1行:1个整数,表示最小激活代价

Sample Input

6 5 3 3
1 4 2 4
2 4 3 5
3 5 4 2
4 6 2 3
5 6 3 4 

Sample Output

4 

Hint

对于30%的数据: 1 ≤ L ≤ N ≤ 100 ,0 ≤ M ≤ 2,000 ,1 ≤ cost ≤ 10,000 
对于60%的数据: 1 ≤ L ≤ N ≤ 1,000,0 ≤ M ≤ 20,000 ,1 ≤ cost ≤ 10,000 
对于100%的数据:1 ≤ L ≤ N ≤ 2,000,0 ≤ M ≤ 80,000 ,1 ≤ cost ≤ 1,000,000 
对于100%的数据:1 ≤ limit ≤ 1,000

保证任意(u,v)都只出现一次

【分析】

离散化 + 二分答案 + 最大流

我们只需要二分激活度,然后最大流验证。注意可以离散化出现过的激活度,那么只需要二分数组下标即可。

【代码】

/*ID:CiocioLANG:C++DATE:2013-11-23TASK:nitori
*/
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <queue>using namespace std;#define INF 999999999
#define MAXN 2005
#define MAXM 80005int N,M,L,K,ans,Limit;
int vd[MAXN],dis[MAXN],Map[MAXN][MAXN],g[MAXN][MAXN];
int Y[MAXM+MAXN],Last[MAXM+MAXN],Next[MAXM+MAXN],Cost[MAXM+MAXN];
int V[MAXM],cnt;int tot;
void _addedge(int a,int b,int c)
{tot++;Y[tot]=b;Cost[tot]=c;Next[tot]=Last[a];Last[a]=tot;
}void _read(int &x)
{char tt=getchar();while(tt<'0'||'9'<tt) tt=getchar();for(x=0;'0'<=tt&&tt<='9';x=x*10+tt-'0',tt=getchar());
}void _init()
{_read(N);_read(M);_read(L);_read(K);for(int i=1;i<=M;i++){int u,v,limit,cost;_read(u);_read(v);_read(limit);_read(cost);_addedge(u,v,cost);Map[u][v]=limit;V[++cnt]=cost;}for(int i=1;i<=L;i++){_addedge(0,i,0);Map[0][i]=INF;}V[++cnt]=0;N++;_addedge(N-1,N,0);Map[N-1][N]=INF;
}int _SAP(int u,int flow)
{if(u==N) return flow;int delta=0;for(int j=Last[u];j;j=Next[j]){int v=Y[j];if(Cost[j]<=Limit&&g[u][v]>0&&dis[u]==dis[v]+1){int temp=_SAP(v,min(flow-delta,g[u][v]));g[u][v]-=temp;g[v][u]+=temp;delta+=temp;if(delta==flow) return delta;}}if(dis[0]>=N) return delta;vd[dis[u]]--;if(vd[dis[u]]==0) dis[0]=N;dis[u]++;vd[dis[u]]++;return delta;
}void _solve()
{sort(V+1,V+1+cnt);int j=0;for(int i=1;i<=cnt;i++)if(V[i]!=V[i+1])V[++j]=V[i];cnt=j;int Left=1,Right=cnt,Mid,temp;while(Left<=Right){temp=0;Mid=(Left+Right)>>1;Limit=V[Mid];memset(vd,0,sizeof(vd));memset(dis,0,sizeof(dis));memcpy(g,Map,sizeof(Map));while(dis[0]<N)temp+=_SAP(0,INF);if(temp>=K){ans=Limit;Right=Mid-1;}else Left=Mid+1;}printf("%d\n",ans);
}int main()
{_init();_solve();return 0;
}

【东方幻想乡系列模拟赛 Stage 4】 河城荷取相关推荐

  1. codevs1376帕秋莉•诺蕾姬 东方幻想乡系列模拟赛Stage 2[三星]

    题目很老但是很经典~ 题目链接:-------------->题目地址 题目描述 Description 在幻想乡,帕秋莉•诺蕾姬是以宅在图书馆闻名的魔法使.这一天帕秋莉又在考虑如何加强魔法咒语 ...

  2. 东方幻想乡系列模拟赛T2琪露诺题解

    题目地址: http://fzoj.xndxfz.com/JudgeOnline/problem.php?id=2146&csrf=17peCLMJM49glhqlg9KaD7Agf5o5QY ...

  3. [wikioi 1418]铃仙•优昙华院稻叶(东方幻想乡系列模拟赛)(树上递推)

    题目:http://www.wikioi.com/problem/1418/ 分析: 一看就肯定是树上的递推 设f[i][j][k]表示第i秒在k点(从j点走过来的)的概率 则f[i][j][k]=f ...

  4. 东方幻想乡/BadApple!!

    原曲:东方幻想乡/BadApple!! Vocal:nomico サークル:Alstroemeria Records 社团:Alstroemeria Records アルバム:Lovelight 专辑 ...

  5. mc幻想乡java_我的世界1.7.2幻想乡整合版下载_我的世界1.7.2东方幻想乡下载_游戏之家...

    游戏类型:休闲益智(50.0) 游戏语言:简体中文 游戏大小:241MB 制 作 商:暂无 发 行 商:暂无 上市时间:2016-03-25 游戏标签:轻松 适用系统:WinXP, Vista, Wi ...

  6. 我的世界东方系列服务器,minecraft我的世界幻想乡服务器启动器

    我的世界东方幻想乡服务器客户端,幻想乡是专为minecraft我的世界的玩家架设的服务器,而这个客户端也就是幻想乡的启动器,玩家可以通过这个启动器进入到幻想乡的服务器里,这个服务器并非是生存类,也没有 ...

  7. jyzy noip模拟赛5.22-2

    不知道哪来的题 jyzy noip模拟赛5.22-2 样例输入 1 2 3 4 样例输出 0.200000000000000 数据 |a|,|b|,|c|,|d|<=1e9 很多大佬迅速想到二分 ...

  8. 省选模拟赛记录(越往下越新哦~~~)

    LOG 模拟赛 第一次见尼玛这么给数据范围的-- 开考有点困,迷迷糊糊看完了三道题,真的是像老吕说的那样,一道都不会-- 思考T1,感觉有点感觉,但是太困了,就先码了暴力,发现打表可以50分,于是就大 ...

  9. jyzy noip模拟赛5.22-1,3

    这样的两道题 样例输入 5 1 1 1 1 4 样例输出 2 样例输入 5 10 样例输出 8 显然的水题 关于第一题 贪心一下,显然是最左边最右边放一个度为一的,所有的度大于1的在中间排成链 ans ...

最新文章

  1. BIEE物理业务层编辑之后发布路径
  2. TreeView复选框选择逻辑判断
  3. linux管理员工作目录,密码管理员 - FPM2
  4. php开源mvccms_轻松理解MYSQL MVCC 实现机制
  5. 邮箱是互联网的个人中心
  6. 苹果笔记本适合什么人 中国Mac电脑用户的8个事实
  7. 对视频中车辆车牌进行识别并圈出
  8. pb模型多batch_介绍Modern Batch和计算密集型编程模型
  9. java 实现 excel 去重,nodejs读取并去重excel文件
  10. 在实时控制系统中使用传感器优化数据可靠性的3个技巧
  11. 人教版五年级下册计算机试题答案,人教版五年级下册语文试卷
  12. 基于QQ空间热修复原理实践
  13. C语言习题带答案和解析
  14. 【大学生软件测试基础】web版微信登录测试 - 正交表
  15. 在视图列中显示文档所有读者和作者
  16. 解决Laragon的nginx/apache重启后网站配置文件被修改的问题 - This file has been modified by another program - 文件auto.conf
  17. #图书管理系统的设计与实现#
  18. [29期] 一个乞丐的故事,什么叫职业人?
  19. 视频教程-软考系统集成项目管理工程师视频教程(上)-软考
  20. 国务院办公厅关于2013年部分节假日安排的通知(转载)

热门文章

  1. 虚拟视频驱动vivi.c分析(linux-3.4.2版本)
  2. mysql 最大值65536_SQL server事物复制报错:要复制的 LOB 数据的长度(xxxxx)超出了配置的最大值 65536...
  3. Node.js中的npm与包
  4. rss下载_Microsoft下载中心RSS提要
  5. 数商云化妆品行业电商平台系统解决方案
  6. 基于JAVA的校园二手交易平台(附:源码 论文 数据库文件)
  7. fnd_global和fnd_profile 的区别
  8. Invalid bound statement (not found): com.sxt.sys.mapper.MenuMapper.insert
  9. python实现淘宝客服自动回复语_Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例...
  10. 布尔-施罗德逻辑代数中的命题逻辑-- 布尔逻辑之七(尾篇**)