洛谷3778 [APIO2017]商旅
题目:https://www.luogu.org/problemnew/show/P3778
一看就是0/1分数规划。但不能直接套模板,因为有个商品种类的限制。
考虑从a买在b卖,商品种类根本没用,关注的是最大营利。于是可以考虑暴枚建一个完全图消除商品种类的影响。
然后就可以愉快地0/1分数规划了。
注意:1.零环也是合法的!
2.!!!1点没有什么特殊的,spfa里不能只从1点走。应该把所有点都先加进队列里!图的连通性可能很差,但只要随便有个正环就行了,故应如此!
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define ll long long
using namespace std;
const int N=,M=,K=;
const ll INF=;//memset 1
int n,m,k,ct[N];
ll t[N][N],c[N][N],s[][N][K],dis[N],l,r,ans;
bool vis[N];
int rdn()
{
int ret=,fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=-;ch=getchar();}
while(ch<=''&&ch>='')(ret*=)+=ch-'',ch=getchar();
return ret*fx;
}
ll rdl()
{
ll ret=,fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=-;ch=getchar();}
while(ch<=''&&ch>='')(ret*=)+=ch-'',ch=getchar();
return ret*fx;
}
void floyd()
{
for(int u=;u<=n;u++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
t[i][j]=min(t[i][j],t[i][u]+t[u][j]);
}
ll cal(int x,int y,ll lm)
{
return c[x][y]-t[x][y]*lm;
}
bool spfa(ll lm)
{
queue<int> q;
for(int i=;i<=n;i++)q.push(i),dis[i]=,vis[i]=ct[i]=;//////////////从1点不一定走到所有点(1点啥也不是)
while(q.size())
{
int u=q.front();q.pop();vis[u]=;
for(int v=;v<=n;v++)
if(dis[v]<=dis[u]+cal(u,v,lm))//<=,因为零环也可以
{
dis[v]=dis[u]+cal(u,v,lm);
if(!vis[v])
{
q.push(v);ct[v]++;vis[v]=;//vis[v]=1!!(别忘写……)
if(ct[v]>n)return true;
}
}
}
return false;
}
int main()
{
n=rdn();m=rdn();k=rdn();int x,y;ll z;
for(int i=;i<=n;i++)for(int u=;u<=k;u++)
for(int d=;d<=;d++)
{
s[d][i][u]=rdl();
if(s[d][i][u]==-){if(!d)s[d][i][u]=INF;else s[d][i][u]=-INF;}
}
memset(t,,sizeof t);//c初值为0
for(int i=;i<=m;i++)
{
x=rdn();y=rdn();z=rdl();t[x][y]=z;
}
floyd();
for(int i=;i<=n;i++)for(int j=;j<=n;j++)
// if(i!=j&&t[i][j]<INF)//写不写都行,写了更快一点//INF的t会在spfa里判掉//i与i数据应该不会给能营利的
for(int u=;u<=k;u++)c[i][j]=max(c[i][j],s[][j][u]-s[][i][u]),r=max(r,c[i][j]);
while(l<=r)
{
ll mid=((l+r)>>);
if(spfa(mid))ans=mid,l=mid+;
else r=mid-;
}
printf("%lld",ans);
return ;
}
洛谷3778 [APIO2017]商旅的更多相关文章
- 洛谷P3778 [APIO2017]商旅——01分数规划
题目:https://www.luogu.org/problemnew/show/P3778 转化有点技巧: 其实直接关注比率的上下两项,也就是盈利和时间: 通过暴枚和 floyd 可以处理出两两点间 ...
- BZOJ4898 & BZOJ5367 & 洛谷3778:[APIO2017]商旅——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4898 https://www.lydsy.com/JudgeOnline/problem.php? ...
- APIO 2017 商旅 洛谷3778
Description 在广阔的澳大利亚内陆地区长途跋涉后,你孤身一人带着一个背包来到了科巴.你被这个城市发达而美丽的市场所 深深吸引,决定定居于此,做一个商人.科巴有个集市,集市用从1到N的整数编号 ...
- 洛谷 P2056 BZOJ 2743 [HEOI2012]采花
//表示真的更喜欢洛谷的题面 题目描述 萧芸斓是 Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 n 朵花,花有 c 种颜色(用整数 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
随机推荐
- 谈谈对Canal(增量数据订阅与消费)的理解
概述 canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql(也支持mariaDB). 起源:早期,阿里巴巴B2B公司 ...
- 采用DoGet方式提交中文,乱码产生原因分析及解决办法
前段时间某功能在测试机器上出现乱码,情况如下: 现象: 调试搜索功能时,通过doGet方法提交到后台的中文参数在本地和开发测试机器上为乱码(Action层),在测试人员测试机器 ...
- sed 案例
sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器.能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上 ...
- Mysql导出数据结构 or 数据
如果我们单单只想导出mysql数据表结构,通过navcat工具还不行,这时我们可以用mysqldump工具 在mysql server的安装目录:C:\Program Files\MySQL\MySQ ...
- hibernate 实体对象的三种状态以及转换关系。
最新的Hibernate文档中为Hibernate对象定义了四种状态(原来是三种状态,面试的时候基本上问的也是三种状态),分别是:瞬时态(new, or transient).持久态(managed, ...
- struts2——第一个案例
步骤如下 编程工具等百度云分享 1.创建一个web项目 2.引入struts2的基本jar包 struts2的基本jar包百度云 链接:https://pan.baidu.com/s/1LBnPJhF ...
- nagios报错Error: No such CGI app - /usr/local/nagios/sbin/nagios/cgi-bin/status.cgi may not exist or is not executable by this process.
加上rewrite rewrite ^/nagios/cgi-bin/(.*)\.cgi /$.cgi break;
- qtjambi_编译
ZC: 写文章时间为 20160716 1. 1.1.在 Win7x64中编译不成功,主要原因是 源码中包含的程序generator.exe出现内存错误 ==> 于是,转到 虚拟机XPsp3中编 ...
- phpstrom ctrl+s无法上传的问题 解决
首先这个不教你怎么配置同步FTP,这个教程网上太多了. 主要是配置好了上传,上传的好好的,突然某一天不能上传了,或者配置好了上传不了. 我遇到的问题是,如果你没有点击Use this server a ...
- cloudsim仿真过程中内存占用过大问题的解决
在写<云环境下基于预算和截止期约束的科学工作流弹性资源提供和调度>这篇文章时用到了cloudsim仿真软件进行实验仿真,在实验过程中遇到了当仿真执行时间过长时程序总是不能正常结束,由于仿真 ...