题解 [SDOI2010] 大陆争霸
解析
这题似乎不是那么难啊
首先,显而易见,
如果要摧毁一个城市,必须要满足两个条件:
- 机器人摧毁了保护它的城市.
- 机器人到达了这个城市.
而这两个条件可以同时进行(毕竟有无数机器人)
那么显然,我们只需要在上面的条件的时间取\(max\)就行了.
具体来说,我们可以魔改dijkstra,
设\(d1[i]\)是到达\(i\)的时间,\(d2[i]\)是摧毁保护\(i\)的所有城市的时间,
对于保护\(j\)的城市\(i\),从\(i\)到\(j\)连边(新建一张图),就可以更新\(d2\)了.
只要城市被摧毁,就将它放到堆里面就行了.
具体看代码吧:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#define fre(x) freopen(x".in","r",stdin),freopen(x".out","w",stdout)
using namespace std;
inline int read(){
int sum=0,f=1;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=sum*10+ch-'0';ch=getchar();}
return f*sum;
}
const int N=100001;
struct edge{int to,next,w;}e[N<<1],E[N<<1];
int n,m;
int head[N],Head[N],cnt,Cnt;
int d1[N],d2[N],s[N],v[N];
priority_queue < pair<int,int> > que;
inline void add(int x,int y,int w){
e[++cnt]=(edge){head[x],y,w};head[x]=cnt;
}
inline void Add(int x,int y,int w){
E[++Cnt]=(edge){Head[x],y,w};Head[x]=Cnt;
}
inline void dij(){
memset(d1,0x3f,sizeof(d1));d1[1]=0;
que.push(make_pair(0,1));
while(!que.empty()){
int x=que.top().second,d=-que.top().first;que.pop();
if(max(d1[x],d2[x])!=d) continue;
if(v[x]) continue;v[x]=1;
for(int i=head[x];i;i=e[i].to){
int k=e[i].next;
if(d1[k]<=d+e[i].w) continue;
d1[k]=d+e[i].w;
if(!s[k]) que.push(make_pair(-max(d1[k],d2[k]),k));
}
for(int i=Head[x];i;i=E[i].to){
int k=E[i].next;
s[k]--;d2[k]=max(d2[k],d);
if(!s[k]) que.push(make_pair(-max(d1[k],d2[k]),k));
}
}
// for(int i=1;i<=n;i++) printf("d1[%d]=%d d2[%d]=%d\n",i,d1[i],i,d2[i]);
}
int main(){
n=read();m=read();
for(int i=1;i<=m;i++){int x=read(),y=read(),w=read();add(x,y,w);}
for(int i=1;i<=n;i++){
s[i]=read();
for(int j=1;j<=s[i];j++){int x=read();Add(x,i,0);}
}
dij();
printf("%d\n",max(d1[n],d2[n]));
return 0;
}
题解 [SDOI2010] 大陆争霸的更多相关文章
- 洛谷 P2446 [SDOI2010]大陆争霸 解题报告
P2446 [SDOI2010]大陆争霸 题目背景 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭的神曾·布拉 ...
- AC日记——[SDOI2010]大陆争霸 洛谷 P3690
[SDOI2010]大陆争霸 思路: dijkstra模板: 代码: #include <bits/stdc++.h> using namespace std; #define maxn ...
- bzoj1922 [SDOI2010]大陆争霸 分层图
问题描述 幻想历8012年5月12日深夜,斯普林·布拉泽降下神谕:“Trust me, earn eternal life.”克里斯军团士气大增.作为克里斯军团的主帅,你决定利用这一机会发动奇袭,一举 ...
- BZOJ1922 [Sdoi2010]大陆争霸 【最短路】
题目 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的 克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭 的神曾·布拉泽,而克里斯国信仰象征光明和永恒的神斯普林 ...
- BZOJ1922 [Sdoi2010]大陆争霸
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- bzoj 1922 [Sdoi2010]大陆争霸(最短路变形)
Description 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的 克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭 的神曾·布拉泽,而克里斯国信仰象征光 ...
- BZOJ1922:[SDOI2010]大陆争霸(最短路)
Description 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的 克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭 的神曾·布拉泽,而克里斯国信仰象征光 ...
- Dijkstra【P2446】 [SDOI2010]大陆争霸
Background 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭的神曾·布拉泽,而克里斯国信仰象征光明和永 ...
- 【BZOJ1922】[Sdoi2010]大陆争霸 Dijkstra
Description 具体地说,杰森国有 N 个城市,由 M条单向道 路连接.神谕镇是城市 1而杰森国的首都是城市 N.你只需摧毁位于杰森国首都 的曾·布拉泽大神殿,杰森国的信仰,军队还有一切就都会 ...
随机推荐
- HTTP用户认证、追加协议以及相关技术简单学习
1. 用户身份认证 BASIC认证(基本认证): DIGEST(摘要认证): SSL客户端认证: FormBase认证(表单认证)常用: session和cookie 2. 基于HTTP的追加协议 A ...
- 【转载】Jave开发手册之正则表达式预编译
今天又水一篇,java开发手册华山版 一.编程规约 (九)其它 第一条 解释:Pattern要定义为static final静态变量,以避免执行多次预编译. 错误用法: // 没有使用预编译 priv ...
- Windows应急响应常见命令
---恢复内容开始--- 1.查看所有连接的PID netstat -ano 2.过滤特定端口 netstat -ano | findstr “443” 3.查看占用443端口的进程 tasklist ...
- Promise.all的使用
我有一个需求如下: 有一个学生号的数组,根据这个数组,取出相关学生的所有信息.获取学生信息的接口用setTime模拟,假设每次请求需要耗时2s,代码如下 // 获取学生信息接口 function ge ...
- 基于bootstrap selectpicker ,实现select下拉框模糊查询功能
1.html代码块 需要引入bootstrap的css js jquery bootstrap.css bootstrap-select.min.css jquery-1.11.3.min.js bo ...
- c#学习笔记-string stringBuilder
string aTest = "abc";//分配固定的内存大小 aTest += "ddd"; //销毁原先的数据再来分配,消耗大 StringBuilder ...
- Python 数字(函数)
Python支持4种不同数值类型: 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点. 长整型(long integers) - 无限大小的整数,整数最后是一个大写或小写的L. 浮 ...
- TypeScript入门四:TypeScript的类(class)
TypeScript类的基本使用(修饰符) TypeScript类的抽象类(abstract) TypeScript类的高级技巧 一.TypeScript类的基本使用(修饰符) TypeScript的 ...
- SpringCloud多网卡配置(转)
https://blog.csdn.net/lixiang987654321/article/details/88134324 docker部署过程中遇到如下问题: (1)docker容器创建之后,进 ...
- ASE19团队项目alpha阶段model组 scrum7 记录
本次会议于11月11日,19时整在微软北京西二号楼sky garden召开,持续15分钟. 与会人员:Jiyan He, Kun Yan, Lei Chai, Linfeng Qi, Xueqing ...