【题目链接】

点击打开链接

【算法】

令cost(i,j) = 第i天到第j天走相同的路线,路线长度的最小值

那么,只需筛选出第i天到第j天可以装卸货物的码头,然后将这些码头之间连边,跑弗洛伊德(或其它最短路算法),即可

然后,我们用f[i]表示前i天,总成本最小是多少,显然有 :

f[i] = max{f[j-1] + cost(j,i) * (i - j + 1) + k}

特别地,f[0] = -k

那么,最后的答案就是f[n]

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXN 110
#define MAXM 30
const long long INF = 2e9; long long n,m,k,e,i,j,u,v,w,d,a,b,pos;
long long g[MAXM][MAXM],mark[MAXM][MAXN],f[MAXN]; inline long long calc(long long l,long long r)
{
long long i,j,k;
static bool flag[MAXM];
static long long dist[MAXM][MAXM];
memset(flag,false,sizeof(flag));
for (i = ; i <= m; i++)
{
for (j = l; j <= r; j++)
{
flag[i] |= mark[i][j];
}
}
for (i = ; i <= m; i++)
{
for (j = ; j <= m; j++)
{
if (i == j) dist[i][j] = ;
else if ((!flag[i]) && (!flag[j])) dist[i][j] = g[i][j];
else dist[i][j] = INF;
}
}
for (k = ; k <= m; k++)
{
for (i = ; i <= m; i++)
{
if (i == k) continue;
for (j = ; j <= m; j++)
{
if (i == j || k == j) continue;
dist[i][j] = min(dist[i][j],dist[i][k]+dist[k][j]);
}
}
}
return dist[][m];
} int main() { scanf("%lld%lld%lld%lld",&n,&m,&k,&e);
for (i = ; i <= m; i++)
{
for (j = ; j <= m; j++)
{
if (i != j) g[i][j] = INF;
}
}
for (i = ; i <= e; i++)
{
scanf("%lld%lld%lld",&u,&v,&w);
g[u][v] = g[v][u] = min(g[u][v],w);
}
scanf("%lld",&d);
for (i = ; i <= d; i++)
{
scanf("%lld%lld%lld",&pos,&a,&b);
mark[pos][a]++; mark[pos][b+]--;
}
for (i = ; i <= m; i++)
{
for (j = ; j <= n; j++)
{
mark[i][j] += mark[i][j-];
}
} f[] = -k;
for (i = ; i <= n; i++) f[i] = INF;
for (i = ; i <= n; i++)
{
for (j = i; j >= ; j--)
{
f[i] = min(f[i],f[j-] + calc(j,i) * (i - j + ) + k);
}
} printf("%lld\n",f[n]); return ; }

【ZJOI 2006】 物流运输的更多相关文章

  1. [ZJOI 2006]物流运输

    Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...

  2. [BZOJ1003](ZJOI 2006) 物流运输trans

    [题目描述] 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟 ...

  3. ZJOI 2006 物流运输 bzoj1003

    题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪. ...

  4. 【BZOJ1003】【ZJOI2006】物流运输

    1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2556  Solved: 1008[Submit] ...

  5. BZOJ 1003 物流运输 题解 【SPFA+DP】

    BZOJ 1003 物流运输 题解 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的 ...

  6. BZOJ1003 物流运输 最短路+DP

    1003: [ZJOI2006]物流运输 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条 ...

  7. BZOJ-1003 物流运输trans SPFA+DP

    傻逼错误耗我1h,没给全范围坑我1A.... 1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MB Submit: 529 ...

  8. [ZJOI2006]物流运输

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5999  Solved: 2473[Submit][Stat ...

  9. bzoj1003 [ZJOI2006]物流运输

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 6300  Solved: 2597[Submit][Stat ...

  10. 【BZOJ】【1003】【ZJOI2006】物流运输trans

    最短路/DP 这题数据规模并不大!!这是重点……… 所以直接暴力DP就好了:f[i]表示前 i 天的最小花费,则有$f[i]=min\{f[j]+cost[j+1][i]+k\} (0\leq j \ ...

随机推荐

  1. git push ‘No refs in common and none specified’doing nothing问题解决

    git push ‘No refs in common and none specified’doing nothing问题解决 输入git push origin master即可解决问题

  2. 飞行路线(BZOJ 2763)

    题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...

  3. Contest Hunter #46 T1 磁力块 [花式暴力]

    将所有石头按距离远近排序,将所有取到的时候扔进堆里维护最大磁力强度. 贪心,每次用强度最强的磁石尝试吸引地上的石头,扫完区间以后,这块石头就再也不会用到了. 在此基础上可以做些小优化,比如说优化未取石 ...

  4. Solr Admin管理界面使用说明

    Notice:本说明基于Solr6.4.2. 本文讨论的是如何使用Solr Admin UI. 一级菜单 图1.SolrCloud模式 图2.单机Solr模式 Logging:展示Solr的日志,不用 ...

  5. 显示倒计时的Button按钮

    package com.pingyijinren.helloworld.activity; import android.os.CountDownTimer; import android.suppo ...

  6. 2015轻院校赛 D 社交网络(排列组合)

    http://acm.zznu.edu.cn/problem.php?id=1964 题目描述 输入 输出 样例输入 2 2 1 0 1 1 0 3 1 0 1 1 1 0 1 1 1 0 样例输出 ...

  7. Java学习--反码 原码 补码简析

    关于课上实验中对小数的处理中出现的问题涉及到原码,反码,补码的问题,所以在网上进行了一下搜索.在原码,反码,补码中的解释可得知,无论是哪一种码,能够表示的数的范围是-2^(位数-1)+1至2^(位数- ...

  8. [WinForm]DataGridView列头右键菜单

    [WinForm]DataGridView列头右键菜单 前言 继续"不误正业" - - #,记录一下.有时候有这样的需求:DataGridView的列头菜单可以选择具体显示哪些列, ...

  9. 【深度探索C++对象模型】data语义学

    class X{}; class Y :public virtual X{}; class Z :public virtual X{}; class A :public Y, public Z{}; ...

  10. CSS浮动通俗讲解

    首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为d ...