【BZOJ2259】[Oibh]新型计算机 最短路

【BZOJ2259】[Oibh]新型计算机

Description

Tim正在摆弄着他设计的“计算机”,他认为这台计算机原理很独特,因此利用它可以解决许多难题。 
但是,有一个难题他却解决不了,是这台计算机的输入问题。新型计算机的输入也很独特,假设输入序列中有一些数字(都是自然数——自然数包括0),计算机先读取第一个数字S1,然后顺序向后读入S1个数字。接着再读一个数字S2,顺序向后读入S2个数字……依此类推。不过只有计算机正好将输入序列中的数字读完,它才能正确处理数据,否则计算机就会进行自毁性操作! 
Tim现在有一串输入序列。但可能不是合法的,也就是可能会对计算机造成破坏。于是他想对序列中的每一个数字做一些更改,加上一个数或者减去一个数,当然,仍然保持其为自然数。使得更改后的序列为一个新型计算机可以接受的合法序列。 
不过Tim还希望更改的总代价最小,所谓总代价,就是对序列中每一个数操作的参数的绝对值之和。 
写一个程序: 
? 从文件中读入原始的输入序列; 
? 计算将输入序列改变为合法序列需要的最小代价; 
? 向输出文件打印结果。

Input

输入文件包含两行,第一行一个正整数N,N<1 000 001。 
输入文件第二行包含N个自然数,表示输入序列。

Output

仅一个整数,表示把输入序列改变为合法序列需要的最小代价,保证最小代价小于109。

Sample Input

4
2 2 2 2

Sample Output

1

题解:一开始以为是DP+树状数组,后来发现竟然是最短路~

从i向i+s1+1连一条边权为0的边,在从i+s1+1向两边连边权为1的边,注意不要重复连边,修改后的s1不能是负数

#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
#include <utility>
#define mp(A,B)	make_pair(A,B)
using namespace std;
const int maxn=1000010;
priority_queue<pair<int,int> > pq;
int dis[maxn],lv[maxn],rv[maxn],to[maxn<<2],next[maxn<<2],head[maxn],val[maxn<<2],vis[maxn];
int n,m,cnt;
void add(int a,int b,int c)
{
	to[cnt]=b,val[cnt]=c,next[cnt]=head[a],head[a]=cnt++;
}
int main()
{
	scanf("%d",&n);
	int i,j,u;
	memset(head,-1,sizeof(head));
	for(i=1;i<=n;i++)
	{
		scanf("%d",&u);
		if(i+u>n)	add(i,n+1,i+u-n);
		else	add(i,i+u+1,0);
		for(j=i+1;j<=i+u+1&&j<=n&&!lv[j];j++)	lv[j]=1,add(j,j-1,1);
		for(j=i+u+1;j<=n&&!rv[j];j++)	rv[j]=1,add(j,j+1,1);
	}
	memset(dis,0x3f,sizeof(dis));
	pq.push(mp(0,1)),dis[1]=0;
	while(!pq.empty())
	{
		u=pq.top().second,pq.pop();
		if(vis[u])	continue;
		vis[u]=1;
		for(i=head[u];i!=-1;i=next[i])
			if(dis[to[i]]>dis[u]+val[i])
				dis[to[i]]=dis[u]+val[i],pq.push(mp(-dis[to[i]],to[i]));
	}
	printf("%d",dis[n+1]);
	return 0;
}
时间: 2024-10-11 20:07:41

【BZOJ2259】[Oibh]新型计算机 最短路的相关文章

[bzoj2259][Oibh]新型计算机_Dijkstra

新型计算机 bzoj-2259 Oibh 题目大意:给定一个n个数的数列,第i个数为a[i],更改第i个数至x的代价为|x-a[i]|.求最小代价,使得:读入一个数s1后,向后连着读s1个数,然后如s2,再向后读s2个数.保证最后恰好读到第n个数. 注释:$1\le n\le 10^6$ 想法:又开始了... ...在那里一顿dp... 结果又是一个图论题.. ..这场面好熟悉 我们直接从第i个数像第i+a[i]连一条边权为0的边.然后这时我们思考暴力怎么做?暴力的话从i+a[i]开始像左右依次

BZOJ2259 [Oibh]新型计算机

话说hzwer你在坑爹?... 我按照你的建图交了上去,发现WA. 开始检查= =...过了好久,突然觉得画风不对...hzwer您建图错了啊!!! 后来看了看zyk的终于知道了怎么回事>_< 1 /************************************************************** 2 Problem: 2259 3 User: rausen 4 Language: C++ 5 Result: Accepted 6 Time:3220 ms 7 Mem

bzoj 2259 [Oibh]新型计算机 ——最短路(建图)

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2259 不是 n^2 条边!连那条边权为0的边之后,只要每个位置向它的前一个位置和后一个位置连 1 的边,就能等价于一开始就走到那个位置了. 不会有情况使得操作后 a[ i ] 变成负数来走到 j .因为那样一定不如走到 i 的时候别走到 i 而是直接走到 j . 注意1号点.如果每个点都向后连 1 的边,最大代价岂不是不大于 n ?所以 1 不能向 2 连边权为1的边,因为1是起点,没有转

Google的量子计算之梦:比传统计算机快上1亿倍?

Google的量子计算之梦:比传统计算机快上1亿倍? 本文来自technologyreview,作者 Tom Simonite ,机器之心编译出品,参与:salmoner,薛矽,汪汪,微胖. 近日,谷歌宣布他们的量子计算机比传统计算机快上1亿倍,有人欢呼雀跃,有人提出质疑.让我们来看看背后的故事吧,看看物理学家John Martinis 如何帮谷歌实现炙手可热的量子计算之梦.他或许正手握着量子计算的圣杯,本文选自麻省理工科技评论. Martini团队追寻的神奇计算机 John Martinis用

计算机

计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能.是能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机.可分为超级计算机.工业控制计算机.网络计算机.个人计算机.嵌入式计算机五类,较先进的计算机有生物计算机.光子计算机.量子计算机等.    计算机发明者约翰·冯·诺依曼.计算机是20世纪最先进的科学技术发明之一,对人类的生产活动和社会活动产生了极其

题目12:计算机芯片的发展历史

引用: http://wenku.baidu.com/view/d1d46c0ef78a6529647d5331.html http://www.docin.com/p-230059948.html 基本概念 计算机芯片:芯片组决定了主板的功能,是主板的灵魂. 分类:北桥芯片.南桥芯片. 北桥芯片提供对CPU的类型和主频.内存的类型和最大容量.ISA/PCI/AGP插槽.ECC纠错等支持.南桥芯片则提供对KBC(键盘控制器).RTC(实时时钟控制器).USB(通用串行总线).Ultra DMA/

计算机专业考研方向2011考研

计算机专业考研方向2011考研1  计算机系统结构计算机系统结构二级学科研究并行分布计算.新型计算机.计算机网络与通信.嵌入式系统.集成电路设计.信息存储.可信计算与容错计算等方向.其排名如下: 排名   校名   等级   排名   校名   等级   1   清华大学   A++   10   吉林大学   A   2   浙江大学   A++   11   电子科技大学   A   3   华中科技大学   A+   12   北京邮电大学   B+   4   北京大学   A+   1

计算机考研方向

本文复制了网上的一些资料,为了方便自己以后查阅. 摘自:百度知道 若比邻001的回答 在考研中计算机科学与技术属于工学门类里的一级学科,其有分为三个二级学科:分别是计算机系统结构,计算机软件与理论,计算机应用,每个二级学科下面又分若干研究方向,相关信息如下: 1.计算机系统结构 计算机系统结构二级学科研究并行分布计算.新型计算机.计算机网络与通信.嵌入式系统.集成电路设计.信息存储.可信计算与容错计算等方向. 2.计算机软件与理论 计 算机软件与理论主要包括软件设计.开发.维护和使用过程中涉及的

计算机发展趋势

计算机已经从功能单一.体积较大发展到了功能复杂.体积微小.资源网络化等. 计算机的未来充满了变数,性能的大幅度提高是不可置疑的,而实现性能的飞跃却有多种途径.性能的大幅提升并不是计算机发展的唯一路线,计算机的发展还应当变得越来越人性化,同时也要注重环保等等. 计算机从出现至今,编程语言经历了机器语言.汇编语言.高级语言:操作系统经历了简单操作系统和Linux.Macos.BSD.Windows等现代操作系统四代, 运行速度也得到了极大的提升,第四代计算机的运算速度已经达到几十亿次每秒. 计算机也