Gym-101242B:Branch Assignment(最短路,四边形不等式优化DP)
#include<bits/stdc++.h>
#define s second
#define f first
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int inf=1e9;
const int maxn=;
int Laxt[maxn],Next[maxn],To[maxn],Len[maxn],cnt;
int a[maxn],b[maxn],c[maxn],dis[maxn],N,M,S,B,s[][];
ll dp[][],sum[];
pair<int,int>p[maxn]; int vis[maxn];
void read(int &x){
x=; char c=getchar();
while(c>''||c<'') c=getchar();
while(c>=''&&c<='') x=x*+c-'',c=getchar();
}
void add(int u,int v,int l)
{
Next[++cnt]=Laxt[u]; Laxt[u]=cnt;
To[cnt]=v; Len[cnt]=l;
}
struct in{
int dis,u;
in(){}
in(int dd,int uu):dis(dd),u(uu){}
friend bool operator <(in w,in v){
return w.dis>v.dis;
}
};
void SPFA()
{
rep(i,,M) swap(a[i],b[i]);
cnt=; rep(i,,N) Laxt[i]=,vis[i]=,dis[i]=inf;
rep(i,,M) add(a[i],b[i],c[i]);
priority_queue<in>q; q.push(in(,B+)); dis[B+]=;
while(!q.empty()){
int u=q.top().u; q.pop(); vis[u]=;
for(int i=Laxt[u];i;i=Next[i]){
int v=To[i];if(dis[v]>dis[u]+Len[i]){
dis[v]=dis[u]+Len[i];
if(!vis[v]) vis[v]=,q.push(in(dis[v],v));
}
}
}
}
int main()
{
while(~scanf("%d%d%d%d",&N,&B,&S,&M)){
rep(i,,M) read(a[i]),read(b[i]),read(c[i]);
SPFA();
rep(i,,B) p[i].s=i,p[i].f=dis[i];
SPFA();
rep(i,,B) p[i].f+=dis[i];
sort(p+,p+B+);
rep(i,,B) sum[i]=sum[i-]+p[i].f;
memset(s,,sizeof(s));
memset(dp,0x3f,sizeof(dp));
dp[][]=;
rep(k,,S) s[B+][k]=B;
rep(k,,S){
for(int i=B;i>=;i--) {
for(int j=s[i][k-];j<=s[i+][k]&&j<i;j++){
if(dp[i][k]>dp[j][k-]+1LL*(i-j-)*(sum[i]-sum[j])){
dp[i][k]=dp[j][k-]+1LL*(i-j-)*(sum[i]-sum[j]);
s[i][k]=j;
}
}
}
}
printf("%lld\n",dp[B][S]);
}
return ;
}
Gym-101242B:Branch Assignment(最短路,四边形不等式优化DP)的更多相关文章
- hdu 2829 Lawrence(四边形不等式优化dp)
T. E. Lawrence was a controversial figure during World War I. He was a British officer who served in ...
- BZOJ1563/洛谷P1912 诗人小G 【四边形不等式优化dp】
题目链接 洛谷P1912[原题,需输出方案] BZOJ1563[无SPJ,只需输出结果] 题解 四边形不等式 什么是四边形不等式? 一个定义域在整数上的函数\(val(i,j)\),满足对\(\for ...
- 【转】斜率优化DP和四边形不等式优化DP整理
(自己的理解:首先考虑单调队列,不行时考虑斜率,再不行就考虑不等式什么的东西) 当dp的状态转移方程dp[i]的状态i需要从前面(0~i-1)个状态找出最优子决策做转移时 我们常常需要双重循环 (一重 ...
- codevs3002石子归并3(四边形不等式优化dp)
3002 石子归并 3 参考 http://it.dgzx.net/drkt/oszt/zltk/yxlw/dongtai3.htm 时间限制: 1 s 空间限制: 256000 KB 题目等级 ...
- CF321E Ciel and Gondolas Wqs二分 四边形不等式优化dp 决策单调性
LINK:CF321E Ciel and Gondolas 很少遇到这么有意思的题目了.虽然很套路.. 容易想到dp \(f_{i,j}\)表示前i段分了j段的最小值 转移需要维护一个\(cost(i ...
- HDU 2829 Lawrence (斜率优化DP或四边形不等式优化DP)
题意:给定 n 个数,要你将其分成m + 1组,要求每组数必须是连续的而且要求得到的价值最小.一组数的价值定义为该组内任意两个数乘积之和,如果某组中仅有一个数,那么该组数的价值为0. 析:DP状态方程 ...
- 四边形不等式优化DP——石子合并问题 学习笔记
好方啊马上就要区域赛了连DP都不会QAQ 毛子青<动态规划算法的优化技巧>论文里面提到了一类问题:石子合并. n堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的 ...
- POJ 1160 四边形不等式优化DP Post Office
d(i, j)表示用i个邮局覆盖前j个村庄所需的最小花费 则有状态转移方程:d(i, j) = min{ d(i-1, k) + w(k+1, j) } 其中w(i, j)的值是可以预处理出来的. 下 ...
- 新年趣事之红包--"四边形"不等式优化DP
目录 题目描述 输入 输出 思路 新年趣事之红包 时间限制: 1 Sec 内存限制: 64 MB 题目描述 xiaomengxian一进门,发现外公.外婆.叔叔.阿姨--都坐在客厅里等着他呢.经过仔 ...
随机推荐
- AntDesign vue学习笔记(八)Table服务端分页使用
本文是AntDesign后端分页方法 1.设置pagination <a-table :columns="columns" :dataSource="data&qu ...
- setInterval的使用
可以通过设置标识,判断方法是否执行完 var interval = setInterval(function () { if( flag > 0 ){ clearInterval(interva ...
- SQL系列(八)—— 分组(group by)
在很多场景时,需要对数据按照某条件进行分组统计其数量.平均值等等.有这种需求,SQL自然也有解决方式. 在SQL中通过group by子句对结果按某条件进行分组.语法: select count(co ...
- <More Effective C#: 改善C#代码的50个有效方法>中文版翻译答疑
最近, 有一本很赞的.NET技术书中文版出版了 - <More Effective C#: 改善C#代码的50个有效方法>. 从广州\西安\长沙\上海等各地.NET俱乐部都收到反馈, ...
- java什么是构造方法
构造方法 一.构造方法的特点 (1)每当创建给定类的实例时就调用的方法 (2)与类同名,但没有返回类型 (3)Java 为对象分配内存,初始化实例变量并调用构造方法 (4)两种构造方法 1.参数化构造 ...
- mvn clean -U -e -B -X的作用 查看详细出错信息
https://blog.csdn.net/u014515854/article/details/79820497 在持续集成服务器上使用怎样的 mvn 命令集成项目,这个问题乍一看答案很显然 ...
- 接口例_龟车赛跑_Java
此例演示java中接口的一般用法. 屋子里有一群程序员,每个人在写着自己的类,共同构建一个世界. 项目经理突然出现:“打扰大家一下,公司决定举办一个竞速比赛,你们写的类都可以参加.为了比赛的顺利进行, ...
- Static and Instance Methods in JavaScript
class.method/instance method https://abdulapopoola.com/2013/03/30/static-and-instance-methods-in-jav ...
- Java IO---序列化和反序列化
一.序列化和反序列化介绍 什么是序列化和反序列化? 序列化就是将对象转换为字节序列的过程. 反序列化就是将字节序列恢复为对象的过程. 序列化的用途在哪? 通常情况下,序列化有两个用途: 将对象 ...
- Redux 和React 结合
当Redux 和React 相接合,就是使用Redux进行状态管理,使用React 开发页面UI.相比传统的html, 使用React 开发页面,确实带来了很多好处,组件化,代码复用,但是和Redux ...