2019.03.28 bzoj3597: [Scoi2014]方伯伯运椰子(01分数规划)
传送门
题意咕咕咕有点麻烦不想写
思路:
考虑加了多少一定要压缩多少,这样可以改造边。
于是可以通过分数规划+spfaspfaspfa解决。
代码:
#include<bits/stdc++.h>
#define ri register int
#define fi first
#define se second
using namespace std;
const int rlen=1<<18|1;
inline char gc(){
static char buf[rlen],*ib,*ob;
(ib==ob)&&(ob=(ib=buf)+fread(buf,1,rlen,stdin));
return ib==ob?-1:*ib++;
}
inline int read(){
int ans=0;
char ch=gc();
while(!isdigit(ch))ch=gc();
while(isdigit(ch))ans=((ans<<2)+ans<<1)+(ch^48),ch=gc();
return ans;
}
const int N=10005,M=15005;
const double eps=1e-3;
typedef pair<int,double> pii;
vector<pii>e[N];
int n,m;
bool in[N];
double dis[N];
inline bool dfs(int p){
in[p]=1;
for(ri i=0,v;i<e[p].size();++i){
if(dis[v=e[p][i].fi]>dis[p]+e[p][i].se){
if(dis[v]=dis[p]+e[p][i].se,in[v])return 1;
if(dfs(v))return 1;
}
}
return in[p]=0;
}
inline bool check(double tmp){
for(ri i=1;i<=n+2;++i){
for(ri j=0;j<e[i].size();++j)e[i][j].se+=tmp;
dis[i]=0,in[i]=0;
}
bool ret=0;
for(ri i=1;i<=n+2;++i)if(dfs(i)){ret=1;break;}
for(ri i=1;i<=n+2;++i)for(ri j=0;j<e[i].size();++j)e[i][j].se-=tmp;
return ret;
}
int main(){
n=read();
for(ri tt=read(),u,v,a,b,c,d;tt;--tt){
u=read(),v=read(),a=read(),b=read(),c=read(),d=read();
e[u].push_back(pii(v,b+d));
if(c)e[v].push_back(pii(u,a-d));
}
double l=0,r=1000;
while(r-l>=eps){
double mid=(l+r)/2;
if(check(mid))l=mid;
else r=mid;
}
printf("%.2lf",l);
return 0;
}
2019.03.28 bzoj3597: [Scoi2014]方伯伯运椰子(01分数规划)的更多相关文章
- bzoj3597[Scoi2014]方伯伯运椰子 01分数规划+spfa判负环
3597: [Scoi2014]方伯伯运椰子 Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 594 Solved: 360[Submit][Statu ...
- bzoj 3597: [Scoi2014]方伯伯运椰子 [01分数规划 消圈定理 spfa负环]
3597: [Scoi2014]方伯伯运椰子 题意: from mhy12345 给你一个满流网络,对于每一条边,压缩容量1 需要费用ai,扩展容量1 需要bi, 当前容量上限ci,每单位通过该边花费 ...
- BZOJ3597 SCOI2014方伯伯运椰子(分数规划+spfa)
即在总流量不变的情况下调整每条边的流量.显然先二分答案变为求最小费用.容易想到直接流量清空跑费用流,但复杂度略有些高. 首先需要知道(不知道也行?)一种平时基本不用的求最小费用流的算法——消圈法.算法 ...
- 【BZOJ3597】方伯伯运椰子(分数规划,网络流)
[BZOJ3597]方伯伯运椰子(分数规划,网络流) 题解 给定了一个满流的费用流模型 如果要修改一条边,那么就必须满足流量平衡 也就是会修改一条某两点之间的路径上的所有边 同时还有另外一条路径会进行 ...
- BZOJ3597 [Scoi2014]方伯伯运椰子 【二分 + 判负环】
题目链接 BZOJ3597 题解 orz一眼过去一点思路都没有 既然是流量网络,就要借鉴网络流的思想了 我们先处理一下那个比值,显然是一个分数规划,我们二分一个\(\lambda = \frac{X ...
- 2019.03.28 bzoj3594: [Scoi2014]方伯伯的玉米田(二维bit优化dp)
传送门 题意咕咕咕 思路:直接上二维bitbitbit优化dpdpdp即可. 代码: #include<bits/stdc++.h> #define N 10005 #define K 5 ...
- 2019.03.28 bzoj3598: [Scoi2014]方伯伯的商场之旅(带权中位数+数位dp)
传送门 题意咕咕咕自己读吧挺简单的 思路: 由带权中位数的性质可以得到对于每个数放在每个二进制位的代价一定是个单调或者单峰函数,因此我们先把所有的数都挪到第一个位置,然后依次向右枚举峰点(极值点)把能 ...
- 2019.03.28 bzoj3595: [Scoi2014]方伯伯的Oj(splay+map+set)
传送门 题意简述: 给一个有优先级的nnn个人的序列,初始的时候第iii个人排名为iii,现在有mmm个操作,种类如下: 把编号为xxx的改成yyy,输出改前xxx的排名 把编号为xxx放到队首,输出 ...
- Bzoj3597: [Scoi2014]方伯伯运椰子
题面 传送门 Sol 消圈定理:如果一个费用流网络的残量网络有负环,那么这个费用流不优 于是这个题就可以建出残量网络,然后分数规划跑负环了 # include <bits/stdc++.h> ...
随机推荐
- How to Build a New Habit: This is Your Strategy Guide
How to Build a New Habit: This is Your Strategy Guide by James ClearRead this on JamesClear.com Acco ...
- Cygwin工具安装和使用指导书
前言 Cygwin是一个在windows平台上运行的类UNIX模拟环境.它可以满足你在Windows系统上学习Linux基本命令操作.脚本调试的基本需求. Cygwin使用优点介绍 1.Cygwin安 ...
- getPageNumRange
<script> function getPageNumRange(pagenumstr) { var pages=pagenumstr.split(";"); pag ...
- hadoop streaming 中跑python程序,自定义模块的导入
今天在做代码重构,以前将所有python文件放到一个文件夹下,上传到hadoop上跑,没有问题:不过随着任务的复杂性增加,感觉这样甚是不合理,于是做了个重构,建了好几个包存放不同功能的python文件 ...
- java使用c3p0连接mysql,写中文数据乱码的问题
此文说的乱码,是指所有中文的字符都变成了?. 首先,网上普遍搜索到的解决方案都是告诉你要在数据库连接字符串里面增加编码的定义,完整的连接字符串如下: url="jdbc:mysql://12 ...
- springCloud面试题
1.SpringCloud和Dubbo SpringCloud和Dubbo都是现在主流的微服务架构SpringCloud是Apache旗下的Spring体系下的微服务解决方案Dubbo是阿里系的分布式 ...
- 【深入Java虚拟机(1)】:Java内存区域与内存溢出
原文出处: 兰亭风雨 内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器.Jav ...
- 网页html格式导出Excel.xls
1.创建excel方法 /// <summary> /// 创建Excel表格 /// </summary> /// <param name="dt" ...
- ALV 动态行列
动态ALV显示的行列,解决部分报表需求. 运行截图如下: 选择屏幕: ALV输出效果1: ALV输出效果2:: ABAP代码: *&------------------------------ ...
- 链接错误:multiple definition of 'xxx' 问题解决及其原理
内容借鉴 于CSDN炸鸡叔 错因 截图: “multiple definition of 'head' ” “multiple definition of 'tail' ” 解决过程: 1.首先要 ...