1003: [ZJOI2006]物流运输trans - BZOJ
- Description
- 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直接或间接地连接。 但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球。由于星球的不断被摧毁,两个星球之间的通讯通道也开始不可靠起来。现在,反抗军首领交给你一个任务:给出原来两个星球之间的以太隧道连通情况以及帝国打击的星球顺序,以尽量快的速度求出每一次打击之后反抗军占据的星球的连通快的个数。(如果两个星球可以通过现存的以太通道直接或间接地连通,则这两个星球在同一个连通块中)。
- Input
- 输入文件第一行包含两个整数,N (1 <= N <= 2M) 和M (1 <= M <= 200,000),分别表示星球的数目和以太隧道的数目。星球用0~N-1的整数编号。接下来的M行,每行包括两个整数X, Y,其中(0<=X<>Y
- Output
- 输出文件的第一行是开始时星球的连通块个数。接下来的N行,每行一个整数,表示经过该次打击后现存星球的连通块个数。
- Sample Input
- 8 13
- 0 1
- 1 6
- 6 5
- 5 0
- 0 6
- 1 2
- 2 3
- 3 4
- 4 5
- 7 1
- 7 2
- 7 6
- 3 6
- 5
- 1
- 6
- 3
- 5
- 7
- Sample Output
- 1
- 1
- 1
- 2
- 3
- 3
额,不会写,看题解
先预处理出sp[l,r]表示l到r天都能用的最短路
然后dp,f[i,j]表示i到j天的最小花费
f[i,j]=min(f[i,k]+cost+f[k+1,j])
- var
- sp:array[..,..]of longint;
- a:array[..,..]of boolean;
- first,next,last,w,q:array[..]of longint;
- dis:array[..]of longint;
- flag,can:array[..]of boolean;
- n,m,k,e,tot,l,r,head,tail:longint;
- function min(x,y:longint):longint;
- begin
- if x<y then exit(x);
- exit(y);
- end;
- procedure spfa;
- var
- i,j:longint;
- begin
- head:=;
- tail:=;
- q[]:=;
- for i:= to m do
- dis[i]:=;
- dis[]:=;
- for i:= to m do
- flag[m]:=false;
- flag[]:=true;
- for i:= to m do
- begin
- can[i]:=true;
- for j:=l to r do
- if a[i,j] then can[i]:=false;
- end;
- while head<=tail do
- begin
- i:=first[q[head]];
- while i<> do
- begin
- if can[last[i]] then
- if dis[last[i]]>dis[q[head]]+w[i] then
- begin
- dis[last[i]]:=dis[q[head]]+w[i];
- if flag[last[i]]=false then
- begin
- inc(tail);
- flag[last[i]]:=true;
- q[tail]:=last[i];
- end;
- end;
- i:=next[i];
- end;
- flag[q[head]]:=false;
- inc(head);
- end;
- sp[l,r]:=dis[m];
- end;
- procedure insert(x,y,z:longint);
- begin
- inc(tot);
- last[tot]:=y;
- next[tot]:=first[x];
- first[x]:=tot;
- w[tot]:=z;
- end;
- procedure init;
- var
- i,j,x,y,z:longint;
- begin
- read(n,m,k,e);
- for i:= to e do
- begin
- read(x,y,z);
- insert(x,y,z);
- insert(y,x,z);
- end;
- read(e);
- for i:= to e do
- begin
- read(x,y,z);
- for j:=y to z do
- a[x,j]:=true;
- end;
- for l:= to n do
- for r:=l to n do
- spfa;
- end;
- var
- f:array[..,..]of longint;
- procedure work;
- var
- i,j,l:longint;
- begin
- for i:= to n do
- for j:=i to n do
- f[i,j]:=sp[i,j]*(j-i+);
- for i:= to n- do
- for j:= to n-i do
- for l:=j to i+j- do
- f[j,i+j]:=min(f[j,i+j],f[j,l]+k+f[l+,i+j]);
- write(f[,n]);
- end;
- begin
- init;
- work;
- end.
1003: [ZJOI2006]物流运输trans - BZOJ的更多相关文章
- BZOJ 1003 [ZJOI2006]物流运输trans
1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4242 Solved: 1765[Submit] ...
- BZOJ 1003: [ZJOI2006]物流运输trans(最短路+dp)
1A,爽! cost[i][j]表示从第i天到第j天不改路线所需的最小花费,这个可以用最短路预处理出.然后dp(i)=cost[j][i]+dp(j-1)+c. c为该路线的花费. --------- ...
- 【BZOJ】1003: [ZJOI2006]物流运输trans(SPFA+DP)
http://www.lydsy.com/JudgeOnline/problem.php?id=1003 这题一开始看是不会的额,,,还是看题解了..一开始我觉得不能用最短路啥的,,看了题解发现这是d ...
- BZOJ 1003: [ZJOI2006]物流运输trans DP+最短路
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
- BZOJ 1003 [ZJOI2006]物流运输trans ★(Dijkstra + DP)
题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=1003 思路 先Dijkstra暴力求出i..j天内不变换路线的最少花费,然后dp[i] = ...
- BZOJ 1003 [ZJOI2006]物流运输trans SPFA+DP
题意:链接 方法:SPFA+DP 解析:挺好的题目.因为数据范围较小所以用这样的方式能够搞,只是也是挺不好想的. 我们定义cost(i,j)表示从第i天走到第j天运用同一种方式的最小花费,然后因为数据 ...
- BZOJ 1003 ZJOI2006 物流运输trans 动态规划+SPFA
标题效果:给定一个无向图.输送n日,有一天的某一时刻不能去,更换行考虑k,求总成本 一阶cost[i][j]用于第一i为了天j天正在同一航线的最低消费 这种利用SPFA处理 然后就是移动的法规问题 订 ...
- 【BZOJ1003】1003: [ZJOI2006]物流运输trans SPFA+DP
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
- 1003: [ZJOI2006]物流运输trans
spfa+dp; 刚刚开始一直想不通怎么判断他是否换了道: 后来才知道,将那个时间段打包,找出这段时间内的最短路: 真是太奇妙了! #include<cstdio> #include< ...
随机推荐
- jquery的datepicker汉化
$("#date").datepicker({ dateFormat: "yy-mm-dd", monthNames:["1月", &quo ...
- css3 web字体记
css3 web字体 @font-face语法 @font-face能够加载服务器端的字体,让客户端浏览器显示客户端没有安装的字体. @font-face{ font-family:<YourW ...
- Intent的属性介绍
在Android系统的设计中有四大组件:Activity,Service,BroadcastReceiver,ContentProvider.Intent可以被应用于ContentProvider之外 ...
- js解析json读取List中的实体对象示例
1.由后台action 传给前台是需要将map 转成json格式 复制代码代码如下: Map<String, List> resultMap: JSONObject json = JSON ...
- python学习day1--python基础
Python的优缺点 先看优点 Python的定位是“优雅”.“明确”.“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂 ...
- c# DateTime时间格式和JAVA时间戳格式相互转换
/// java时间戳格式时间戳转为C#格式时间 public static DateTime GetTime(long timeStamp) { DateTime dtStart = TimeZon ...
- (转)Facebook内部分享:26个高效工作的小技巧
春节假期马上就要结束了,该收收心进入新一年的工作节奏了~分享 26 个高效工作的小技巧,希望对大家有所帮助~(我发现自己只有最后一条执行得很好,并且堪称完美!) 1.时间常有,时间优先. 2.时间总会 ...
- 停车场管理软件附带源代码 J2EE服务端+android客户端
该源码是停车场管理软件附带源代码 J2EE服务端+android客户端,也是一套停车场管理车辆进出的管理软,喜欢的朋友可以看看吧. 应用的后台管理主要功能介绍:1 机构管理 ,机构有从属管理< ...
- WeX5是主要进行app开发吗?能开发微信App吗?
WeX5是一款html5开发工具,可以进行app开发,做出各种H5 App,同样也可以进行主要运行在PC的html5产品,. WeX5开发的应用,不仅可以在微信上运行,也可以直接手机浏览器运行,或者打 ...
- php session的应用举例
本文原始链接:http://www.jbxue.com/article/9281.html 1,session可以保存任意类型的数据.因为是保存在服务器上的(即已经序列化). 2,session运行机 ...