总结做完了,本来今天不打算写题的,但闲的

被自己以前的想法坑了、

首先,每换一次路就要管一个区间的,所以换路作为决策进行dp

所以预处理满足每一段区间的最短路,来进行区间决策、

一开始想按点决策,发现衔接会有很多问题,

所以可以从整体入手

码:

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
long long tot,hou[405],xia[30],zhong[404],v[404],n,K,i,j,k,l,m,d,a,c,e,b,cost[105][105],f[105];
bool vis[30],no[30],wu[105][30];
queue<int>q;
void jia(int a,int b,int c)
{
++tot,hou[tot]=xia[a],zhong[tot]=b,v[tot]=c,xia[a]=tot;
}
int spfa()
{int d[50];memset(d,0x7f,sizeof(d));//memset(g,0x7f,sizeof(g));memset(vis,0,sizeof(vis));q.push(1);d[1]=0;while(!q.empty()){int nd,i,st=q.front();q.pop();vis[st]=0;for(i=xia[st];i!=-1;i=hou[i]){nd=zhong[i];if(d[nd]>d[st]+v[i]&&!no[nd]){d[nd]=d[st]+v[i];    if(vis[nd]==0){q.push(nd);vis[nd]=1;}  }       }           }return     d[m];
}
int main()
{//memset(f,0x7f,sizeof(f));memset(xia,-1,sizeof(xia));
scanf("%lld%lld%lld%lld",&n,&m,&K,&e);
for(i=1;i<=e;i++)
{
scanf("%lld%lld%lld",&a,&b,&c);
jia(a,b,c);
jia(b,a,c);
}
scanf("%lld",&d);
for(i=1;i<=d;i++)
{scanf("%lld%lld%lld",&c,&a,&b);for(j=a;j<=b;j++)wu[j][c]=1;
}for(i=1;i<=n;i++){memset(no,0,sizeof(no));for(j=i;j<=n;j++)//往后用几天的方式 {for(k=i;k<=j;k++){for(l=1;l<=m;l++)no[l]|=wu[k][l];        }   cost[i][j]=spfa();     }   }for(i=1;i<=n;i++)f[i]=cost[1][i]*(i);for(i=1;i<=n;i++)for(j=1;j<i;j++){f[i]=min(f[i],f[j]+cost[j+1][i]*(i-j)+K);      }printf("%lld",f[n]);
}

2017.9.30 物流运输 思考记录相关推荐

  1. 2017.10.30 覆盖问题 思考记录

    从细节入手已经从一种技巧变成一种策略了. 题目给出的条件很奇怪,是3个正方形,, 为什么是3个而不是4个或2个呢.. 于是先用一个大矩形把所有点卡住 然后显然矩形的每个边 都有一个正方形和他在一条直线 ...

  2. 2017.7.30 玩具装箱 思考记录

    终于明白斜率优化了. 这种东西说简单也简单,说难也难.还是看个人的理解角度 就是利用斜率单调.x单调这两个性质,使得新的函数直线越来越陡,越来越往右(或相反) 答案是拿这个直线去卡以前最优值的点,这样 ...

  3. 2017.5.9 货车运输 思考记录

    这题用最水的方法过了. 只要是多源最短路.最长路.除了floyd,还有生成树.. 对于询问只需要一个一个往上走,直到相同,,若没有出现过这个点,就输出-1::: 然而感觉树链剖分+rmq可以搞,但权值 ...

  4. 2017.3.24 分裂游戏 思考记录

    事先说明:这不是好题解,这只是思考记录 同机房的xp都学博弈了..    感觉还是学学看吧 先来看一下简单的nim: 题目: Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个 ...

  5. 2017.10.24 上升序列 思考记录

    终于有会做的题了... 一开始想用正常的lis ,然后从前往后扫, 由于最优查询区间在序列上是按顺序单调递增的,所以想记录每个点取哪个值跳到哪,这样是n*m logn的 然后发现既然是单调递增的那直接 ...

  6. 2017.10.17 蜘蛛难题 思考记录

    强烈建议不要做此题,此题描述差到极点!毒瘤出题人 首先有想法就是从起点往后按照出水管依次满足,但多个水域需要合起来求下一个最低出水口,所以并不是很好维护 所以最好按照时间模拟 先求出当前状态下的最低水 ...

  7. 2017.10.7 括号序列 思考记录

    这个题看起来很简单,但细节比较麻烦.参考完别人的代码后才想出自己的解法的.. 一开始认为已匹配的括号是可以直接消的,所以就只维护了两个变量 但还有区间取反.. 由于和已配对的括号的顺序有关,所以不是很 ...

  8. 2017.9.28 约数研究 思考记录

    这个题一开始可能会想复杂, 然而它需要对答案的贡献进行归类 可以发现,一个约数对其倍数的数贡献是一样的,,所以可以考虑离散 所以直接对于每个数不好求,就可以考虑每个约数的贡献 而每个约数i就有n/i个 ...

  9. 2017.5.29-6.3 城市规划 思考记录(非常不容易)

    这个题就是让线段树维护区间连通性 用并查集维护,传左右端点的联通情况就可以了 但是,这题的实际难度在于怎么让它们正确的合并? 会出现非常多的问题: 1.子节点能否和父节点共用一个并查集?明显不行,有可 ...

最新文章

  1. [启发式搜索/A*] [SCOI2005]骑士精神题解
  2. UA MATH566 统计理论8 置信区间简介
  3. dependencies与devDependencies之间的区别
  4. 【数据操作】优化SQL server性能 之 索引 (转上)
  5. kvm架构详解--理解CPU、内存、IO虚拟化技术、处理器硬件支持
  6. 台积电已开始试生产3nm芯片 率先为苹果、英特尔供货
  7. apache php 500,apache出现500错误的原因是什么
  8. 华罗庚先生教会我如何学习
  9. dom4j解析XML文件(4)—实战
  10. libxml主要函数说明 (二)
  11. (转)比特币算法——SHA256算法介绍
  12. html5 figure 标签
  13. ora 01033 linux,ORA-01033: ORACLE initialization or shutdown in progres
  14. 用c语言写一个文件加密程序,用C语言设计程序进行文件的加密
  15. SPSS到底怎么入门?这些干货你收藏了么?
  16. 要读的书---培根说:历史使人明智,诗词使人巧慧,算学使人精密,哲理使人深刻,伦理学人庄重,逻辑修辞使人善辩。...
  17. 防止短信接口验证码被恶意点击
  18. Element DateTimePicker 日期时间选择器 今天日期设置,并获取value值
  19. [源码]UnicodeTOGB,能够将Unicode串转换成GB码,方便开发。
  20. mac 更新系统后无法使用 git

热门文章

  1. oracle数据库表excel文件位置,Excel数据导入到oracle数据库表方法
  2. SpringBoot与安全
  3. Android 播放SD卡视频 Demo
  4. Python赋值语句浅析
  5. 计算机学院迎新活动总结,大学迎新活动总结
  6. python1000行代码_用好这3行代码,可以让你的Python脚本速度提升5倍!
  7. Windows + IDEA + SBT 打造Spark源码阅读环境
  8. mybatis萌新基础
  9. 10kv电压互感器型号_电流互感器结构及原理
  10. 数组小案例(求数组最大最小值、反转数组中元素、指定元素第一次出现的索引)