最短路+背包 ACdream群赛题目
来源:互联网 发布:盘古网络招聘长春地区 编辑:程序博客网 时间:2024/04/30 06:56
题目链接点这儿
先跑个最短路,然后在最短路的基础上跑个多重背包。
开始看错了,以为是分组背包 囧
#include <bits/stdc++.h> #define up(i, lower, upper) for(int i = lower; i < upper; i++)#define down(i, lower, upper) for(int i = upper-1; i >= lower; i--) using namespace std;typedef pair<int, int> pii;typedef pair<double, double> pdd;typedef vector<int> vi;typedef vector<pii> vpii;typedef long long ll;typedef unsigned long long ull; const double pi = acos(-1);const double eps = 1.0e-9; template<class T> inline bool read(T &n){ T x = 0, tmp = 1; char c = getchar(); while((c < '0' || c > '9') && c != '-' && c != EOF) c = getchar(); if(c == EOF) return false; if(c == '-') c = getchar(), tmp = -1; while(c >= '0' && c <= '9') x *= 10, x += (c - '0'),c = getchar(); n = x*tmp; return true;} template <class T>inline void write(T n) { if(n < 0) { putchar('-'); n = -n; } int len = 0,data[20]; while(n) { data[len++] = n%10; n /= 10; } if(!len) data[len++] = 0; while(len--) putchar(data[len]+48);} ///---------------------------------------------------------const int maxn = 110 ;const int maxT = 1100 ; int n , m , T ;int x[maxn] , w[maxn] , t[maxn] , dis[maxn];int atlas[maxn][maxn] ;ll f[maxT] ; int main() { scanf("%d%d%d",&n,&m,&T) ; for(int i = 1 ; i <= n ; i++) read(x[i]), read(w[i]), read(t[i]); memset(atlas , 0x3f , sizeof(atlas)) ; for(int i = 0 ; i <= n ; i++) atlas[i][i] = 0 ; for(int i = 0 ; i < m ; i++) { int xi , yi , bi; read(xi), read(yi), read(bi); atlas[xi][yi] = min(atlas[xi][yi] , bi) ; } for(int k = 0 ; k <= n ; k++) for(int i = 0 ; i <= n ; i++) for(int j = 0 ; j <= n ; j++) atlas[i][j] = min(atlas[i][j] , atlas[i][k] + atlas[k][j]) ; for(int i = 0 ; i <= n ; i++) dis[i] = atlas[0][i] ; for(int i = 1 ; i <= n ; i++) for(int ti = T ; ti >= 0 ; ti--) { int j = ti + dis[i] ; for(int k = 1 ; k <= x[i] ; k++) { if(j + k*t[i] > T) break ; f[j+k*t[i]] = max(f[j+k*t[i]] , f[ti]+k*w[i]) ; } } write(f[T]); puts(""); return 0 ;}
0 0
- 最短路+背包 ACdream群赛题目
- ACdream 1415 最短路+桥
- ACdream 1198 Transformers' Mission(最短路)
- Acdream 1415 最短路+双连通
- acdream 1230 Strong Defence 最短路
- ACdream 1415 最短路+桥的判断
- 最短路优化背包
- 题目76:最短路
- 题目1447:最短路
- 题目1447:最短路
- 题目1447:最短路
- 题目1447:最短路
- hdu 3339 最短路+背包
- HDU 3339最短路+背包
- hdu4751 最短路+背包dp
- HDOJ3339(最短路+01背包)
- 题目1447:最短路(Dijkstra)
- Jobdu 题目1447:最短路
- Check if a given Binary Tree is SumTree
- Linux内核hlist数据结构分析
- java计算器设计
- Spring 实现数据库读写分离
- 重風巽
- 最短路+背包 ACdream群赛题目
- 设置setInterval和清除setInterval
- Use CocoaPods With Swift (在 Swift 中使用 CocoaPods)
- java的学习记录9
- 使用Cloudsim实现基于多维QoS的资源调度算法之一:配置Cloudsim环境
- OC中类的创建简单介绍
- hdu 1166 敌兵布阵(线段树)
- obj-c编程09:块的语法
- C++读取一整行字符串