bzoj 1003: [ZJOI2006]物流运输trans
来源:互联网 发布:淘宝客资源怎么找 编辑:程序博客网 时间:2024/04/28 21:16
这道题还算比较水。。
spfa预处理从第i天到第j天的可行最短路存为t[i][j],
然后直接dp。
f[i] 代表到第i天的最小费用
f[i] = min(f[i],min(t[1][i]*i,f[j]+k+t[j+1][i]*(i-j)))
/*ID:zsy99021PROB:bzoj1003 LANG:C++*/#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <iostream>#include <fstream>#include <ctime>#define N 108#define M 28#define mid(l,r) ((l+r) >> 1)#define INF 0x7ffffffusing namespace std; long long n,t[N][N],m,k,e,head[M];long long f[N]; bool flag[N][M]; struct wulala{ int node,next,dist;}h[M*M]; int spfa(int a,int b){ bool block[M],inq[M]; int dis[M]; int tail = 0,headd = 1,q[M*M]; memset(block,0,sizeof(block)); memset(inq,0,sizeof(inq)); memset(q,0,sizeof(q)); for (int i = 1;i <= m;i++) dis[i] = INF; for (int i = a;i <= b;i++) for (int j = 1;j <= m;j++) if (flag[i][j]) block[j] = true; q[1] = 1; inq[1] = true; dis[1] = 0; while(tail < headd) { int u = q[++tail]; int c = head[u]; while(c) { if (block[h[c].node]||dis[h[c].node] < dis[u] + h[c].dist) { c = h[c].next; continue; } if (!inq[h[c].node]) q[++headd] = h[c].node; dis[h[c].node] = dis[u] + h[c].dist; inq[h[c].node] = true; c = h[c].next; } inq[u] = false; } return(dis[m]);} void init(){ memset(flag,0,sizeof(flag)); scanf("%d%d%d%d",&n,&m,&k,&e); for (int i = 1;i <= e;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); h[2*i-1].node = y; h[2*i].node = x; h[2*i-1].dist = h[2*i].dist = z; h[2*i-1].next = head[x]; head[x] = 2 * i - 1; h[2*i].next = head[y]; head[y] = 2 * i; } int d; scanf("%d",&d); for (int i = 1;i <= d;i++) { int a,b,p; scanf("%d%d%d",&p,&a,&b); for (int j = a;j <= b;j++) flag[j][p] = true; } for (int i = 1;i <= n;i++) for (int j = i;j <= n;j++) t[i][j] = spfa(i,j);} void work(){ memset(f,127,sizeof(f)); for (int i = 1;i <= n;i++) f[0] = 0; for (int i = 1;i <= n;i++) for (int j = 0;j < i;j++) f[i] = min(f[i],min(t[1][i]*i,f[j]+k+t[j+1][i]*(i-j)));} void debug(){ for (int i = 1;i <= n;i++) { for (int j = 1;j <= n;j++) printf("%d ",t[i][j]); printf("\n"); }} int main(){ init();// debug(); work(); printf("%d\n",f[n]); return 0;}
0 0
- bzoj 1003: [ZJOI2006]物流运输trans
- bzoj 1003 [ZJOI2006] 物流运输trans 题解
- [BZOJ 1003][ZJOI2006]物流运输trans
- BZOJ 1003:[ZJOI2006]物流运输trans
- BZOJ 1003 [ZJOI2006]物流运输trans
- BZOJ 1003([ZJOI2006]物流运输trans-SPFA+DP)
- BZOJ 1003 ZJOI2006 物流运输trans 动态规划+SPFA
- bzoj 1003 [ZJOI2006]物流运输trans 最短路+DP
- BZOJ-1003-物流运输trans-ZJOI2006-SPFA+DP
- BZOJ 1003: [ZJOI2006]物流运输trans DP+SPFA
- BZOJ 1003 [ZJOI2006]物流运输trans SPFA+DP
- 【ZJOI2006】物流运输trans
- [ZJOI2006]物流运输trans
- [ZJOI2006]物流运输trans
- bzoj 1003 【zjoi2006】物流运输
- 【BZOJ 1003】[ZJOI2006]物流运输
- BZOJ 1003: [ZJOI2006]物流运输
- BZOJ 1003 [ZJOI2006] 物流运输
- bzoj 1002: [FJOI2007]轮状病毒
- 观察者模式—GOF的23个之一
- daliu_IT学习Android笔记第一篇--Android是什么?安卓的logo来源?安卓的发展过程?
- 多线程小结
- jQuery 常用方法经典总结
- bzoj 1003: [ZJOI2006]物流运输trans
- MySQL优化 之 用explain分析低效率的sql语句
- 日本市场智能电视的主要功能
- 2013我在奔波中走过-----------那年的高考改变了我们什么?
- Hadoop分布式文件系统:架构和设计(摘自Hadoop官方文档)
- 安装教程-Mysql
- bzoj 1004: [HNOI2008]Cards
- 学习jQuery必须知道的几种常用方法
- 学习JQuery - 12