bzoj 2259: [Oibh]新型计算机 最短路 建模
Code:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define maxn 3000005
int head[maxn], to[maxn], nex[maxn], val[maxn],edges,s,t,pre[maxn],nxt[maxn];
struct Node{
int dist,u;
Node(int dist=0,int u=0):dist(dist),u(u){}
bool operator <(Node a) const{
return a.dist<dist;
}
};
priority_queue<Node>Q;
void addedge(int u,int v,int c){
nex[++edges]=head[u],head[u]=edges,to[edges]=v,val[edges]=c;
}
int d[maxn];
bool done[maxn];
void dijkstra(){
memset(d,0x3f,sizeof(d));
d[s]=0;
Q.push(Node(0,s));
while(!Q.empty()){
int u=Q.top().u; Q.pop();
if(done[u]) continue;
if(u==t) break;
done[u]=true;
for(int v=head[u];v;v=nex[v])
if(d[u]+val[v] < d[to[v]]){
d[to[v]]=d[u]+val[v];
Q.push(Node(d[to[v]],to[v]));
}
}
}
int main(){
//freopen("input.in","r",stdin);
int n,a;
scanf("%d",&n);
s=1, t=n+1;
for(int i=1;i<=n;++i){
scanf("%d",&a);
for(int j=i+1;j<=min(n+1,a+i+1)&&!pre[j];++j) addedge(j,j-1,1), pre[j]=1;
for(int j=i+a+1;j<=n&&!nxt[j];++j) addedge(j,j+1,1),nxt[j]=1;
if(i+a<=n) addedge(i,i+a+1,0);
else addedge(i,n+1,i+a-n);
}
dijkstra();
printf("%d",d[t]);
return 0;
}
bzoj 2259: [Oibh]新型计算机 最短路 建模的更多相关文章
- bzoj 2259 [Oibh] 新型计算机 —— 最短路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2259 相邻点之间连边权为1的边,就是水最短路了: 要注意点上的数不能改成负数,但是想一想改成 ...
- bzoj 2259 [Oibh]新型计算机 ——最短路(建图)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2259 不是 n^2 条边!连那条边权为0的边之后,只要每个位置向它的前一个位置和后一个位置连 ...
- 【BZOJ2259】[Oibh]新型计算机 最短路
[BZOJ2259][Oibh]新型计算机 Description Tim正在摆弄着他设计的“计算机”,他认为这台计算机原理很独特,因此利用它可以解决许多难题. 但是,有一个难题他却解决不了,是这台计 ...
- BZOJ2259 [Oibh]新型计算机 【傻逼最短路】
Description Tim正在摆弄着他设计的"计算机",他认为这台计算机原理很独特,因此利用它可以解决许多难题. 但是,有一个难题他却解决不了,是这台计算机的输入问题.新型计算 ...
- BZOJ_2259_ [Oibh]新型计算机 _最短路
Description Tim正在摆弄着他设计的“计算机”,他认为这台计算机原理很独特,因此利用它可以解决许多难题. 但是,有一个难题他却解决不了,是这台计算机的输入问题.新型计算机的输入也很独特,假 ...
- 【bzoj2259】[Oibh]新型计算机 堆优化Dijkstra
题目描述 Tim正在摆弄着他设计的“计算机”,他认为这台计算机原理很独特,因此利用它可以解决许多难题. 但是,有一个难题他却解决不了,是这台计算机的输入问题.新型计算机的输入也很独特,假设输入序列中有 ...
- [bzoj2259][Oibh]新型计算机_Dijkstra
新型计算机 bzoj-2259 Oibh 题目大意:给定一个n个数的数列,第i个数为a[i],更改第i个数至x的代价为|x-a[i]|.求最小代价,使得:读入一个数s1后,向后连着读s1个数,然后如s ...
- BZOJ2259 [Oibh]新型计算机
话说hzwer你在坑爹?... 我按照你的建图交了上去,发现WA. 开始检查= =...过了好久,突然觉得画风不对...hzwer您建图错了啊!!! 后来看了看zky的终于知道了怎么回事>_&l ...
- bzoj 2118 墨墨的等式 - 图论最短路建模
墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在非负整数解. Input ...
随机推荐
- JSP中动态include与静态include的区别介绍
转自:https://m.jb51.net/article/43304.htm 动态INCLUDE 用法:<jsp:include page="included.jsp" f ...
- NOIP2012 T3开车旅行 set+倍增
70分做法: 先预处理出所有点的最近和次近(O(n^2)一遍就OK) 然后暴力求出每个解(O(nm)) //By SiriusRen #include <cstdio> #include ...
- TortoiseGit连接github.com
1.下载两个软件:msysgit,TortoiseGit 2.先安装msysgit,再安装TortoiseGit,安装过程保持默认即可. 3.为了安全,我们需要使ssh key.开始菜单--Torto ...
- (转载) Android开发mac /dev/kvm is not found
Android开发mac /dev/kvm is not found 标签: KVMAndroid开发KVM is not found芒果Android芒果iOS 2016-10-29 16:31 2 ...
- Android 广播大全 Intent Action 事件详解
Android 广播大全 Intent Action 事件详解 投稿:mrr 字体:[增加 减小] 类型:转载 时间:2015-10-20我要评论 这篇文章主要给大家介绍Android 广播大全 In ...
- ActiveMQ学习笔记(14)----Destination高级特性(二)
1. Visual Destinations 1.1 概述 虚拟Destination用来创建逻辑Destinations,客户端可以通过它来产生和消费消息,它会把消息映射到物理Destination ...
- 用SqlDataReader返回多个结果集
using System; using System.Data; using System.Data.SqlClient; namespace Northwind { class Program { ...
- 常用类Object,String类详解
-------------------- String -----------------------1.求字符串长度 public int length()//返回该字符串的长度 String st ...
- H5页面在线制作工具搜集
1.初页 http://chuye.cloud7.com.cn/ 2.易企秀 http://eqxiu.com/#/home 3.最酷 http://www.zuiku.com/ 4.易传单 http ...
- (2016北京集训十)【xsy1530】小Q与内存
一道很有意思的神题~ 暴力平衡树的复杂度很对(并不),但是$2^{30}$的空间一脸屎 这题的正解是一个类似线段树的数据结构,我觉得很有创新性Orz 首先可以想到一种暴力就是用一个点代表一个区间,然后 ...