题目: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]商旅的更多相关文章

  1. 洛谷P3778 [APIO2017]商旅——01分数规划

    题目:https://www.luogu.org/problemnew/show/P3778 转化有点技巧: 其实直接关注比率的上下两项,也就是盈利和时间: 通过暴枚和 floyd 可以处理出两两点间 ...

  2. BZOJ4898 & BZOJ5367 & 洛谷3778:[APIO2017]商旅——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4898 https://www.lydsy.com/JudgeOnline/problem.php? ...

  3. APIO 2017 商旅 洛谷3778

    Description 在广阔的澳大利亚内陆地区长途跋涉后,你孤身一人带着一个背包来到了科巴.你被这个城市发达而美丽的市场所 深深吸引,决定定居于此,做一个商人.科巴有个集市,集市用从1到N的整数编号 ...

  4. 洛谷 P2056 BZOJ 2743 [HEOI2012]采花

    //表示真的更喜欢洛谷的题面 题目描述 萧芸斓是 Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 n 朵花,花有 c 种颜色(用整数 ...

  5. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  6. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  7. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  8. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  9. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

随机推荐

  1. 【bzoj5427】最长上升子序列(贪心+LIS)

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5427 因为noip,博客咕了好久,这几天集中填一下坑. 这题我们可以假设往不确定的空位 ...

  2. LeetCode——Longest Consecutive Sequence

    LeetCode--Longest Consecutive Sequence Question Given an unsorted array of integers, find the length ...

  3. 记录使用Buildbot遇到的坑

    Buildbot Tips Buildbot也是个大坑..我并不熟悉python,偏偏文档又少.这几天使用buildbot出了不少坑.有的解决了,有的绕过去,这里都把它们一一记下来. Force Bu ...

  4. windows系统下载地址大全&大白菜下载和教程

    win10的 Windows10 64位纯净系统下载(不建议,后面的有原版) http://cjxt.sysdaa.com/down.php?post=win10-64&action=bend ...

  5. Spark- 使用hiveContext时提交作业报错

    在spark上操作hive时不需要搭建hive环境,只需要从现有的hive集群中hive的conf目录下拷贝 hive-site.xml 到spark的conf目录下即可提交程序运行 出现报错 Cau ...

  6. Python IOError: [Errno 22] invalid mode ('r') 解决方法

    环境 Anaconda3 Python 3.6, Window 64bit 书籍 O'Reilly出版的Wes McKinney编的<Python for Data Analysis> r ...

  7. 51nod-1385-贪心-构造

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1385 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 ...

  8. eclipse配置tomcat运行项目访问不加项目名

  9. 八大排序算法的java实现

    有时间再贴算法分析图 JDK7的Collections.sort()的算法是TimSort, 适应性的归并排序, 比较晦涩难懂, 这里没有实现 public class mySort { // 冒泡排 ...

  10. 【lightoj-1002】Country Roads(dijkstra变形)

    light1002:传送门 [题目大意] n个点m条边,给一个源点,找出源点到其他点的‘最短路’ 定义:找出每条通路中最大的cost,这些最大的cost中找出一个最小的即为‘最短路’,dijkstra ...