复仇者vsX战警之训练
【2017.7.10普及】复仇者vsX战警之训练(train)
(File IO): input:attack.in output:attack.out
Goto ProblemSet
题目描述
在凤凰五使徒的至高的力量的威胁下,复仇者被迫逃到昆仑的一座山上,因为凤凰五使徒监视不到那里。
霍普加入了复仇者,为了磨练自己,她在n个山峰之间跳跃。
这n个山峰在一条直线上,每个山峰都有不同的高度,只知道这些山峰的相对位置。霍普可以将这些山峰左右移动但不能改变他们的相对位置(要保证两两山峰间距为整数且大于等于1)。霍普要从最矮的山峰开始跳,每次跳向第一个比现在她所在的山峰高的山峰,一共跳n-1次,由于能力有限,每次跳跃的水平距离小于等于d。
霍普想知道如何移动这些山峰,使得在可以经过所有的山峰并跳到最高的山峰上的基础下,又要使最矮的山峰和最高的山峰的水平距离最远,霍普要你求出最远的水平距离。如果无论如何也不能经过所有的山峰并跳到最高的山峰上,那么输出-1。
输入
本题每个测试点有多组数据,
在第一行中有一个整数t,表示数据的数目(t<=500)
对于每组数据:
第一行包含两个整数n(1≤n≤1000)和d(1≤d≤1000000)。
下一行包含n个整数,给出n个房子的高度,以便它们应该被移动。在每个数据中,所有的高度都是唯一的。
输出
输出共t行。
对于每组数据输出最远的水平距离。如果无论如何也不能经过所有的山峰并跳到最高的山峰上,那么输出-1。
样例输入
3 4 4 20 30 10 40 5 6 20 34 54 10 15 4 2 10 20 16 13
样例输出
3 3 -1
数据范围限制
对于100%的数据,1≤n≤1000,1≤d≤1000000
听了出题人的讲解,还不是很明白,只是知道这题是一道最短路问题。对于最高的在最低的右边,那么单向图的边权为D的边就是从右往左的。单向图中的每一个点与他相邻的点的边权为-1,并是从左往右的。而对于最高的在最低的左边的则反之。打个SPFA就可以了。
具体代码如下:
varv,g,biao,hs,hsd:array[1..1000] of longint;h,f:array[1..1000,1..1000] of longint;bo:boolean;i,j,n,t,d:longint;
procedure dg(k,ans:longint);
vari,j:longint;
beginfor j:=1 to g[k] dobegini:=h[k,j];if (f[k,i]<>0) and (ans+f[k,i]<v[i]) thenbeginv[i]:=ans+f[k,i];dg(i,ans+f[k,i]);end;end;
end;procedure qsort(l,r:longint);
vari,j,mid,t:longint;
begini:=l;j:=r;mid:=hsd[(i+j) div 2];repeatwhile (hsd[i]<mid) do inc(i);while (hsd[j]>mid) do dec(j);if i<=j thenbegint:=hsd[i];hsd[i]:=hsd[j];hsd[j]:=t;t:=biao[i];biao[i]:=biao[j];biao[j]:=t;inc(i);dec(j);end;until i>j;if i<r thenqsort(i,r);if l<j thenqsort(l,j);
end;
beginassign(input,'attack.in');assign(output,'attack.out');reset(input);rewrite(output);read(t);for i:=1 to t dobeginread(n,d);for j:=1 to n dobeginread(hs[j]);biao[j]:=j;end;fillchar(g,sizeof(g),0);hsd:=hs;qsort(1,n);if biao[1]<biao[n] thenbeginfor j:=2 to n dobeginf[j,j-1]:=-1;inc(g[j]);h[j,g[j]]:=j-1;end;bo:=false;for j:=2 to n dobeginif (biao[j]>biao[j-1]) thenbeginf[biao[j-1],biao[j]]:=d;inc(g[biao[j-1]]);h[biao[j-1],g[biao[j-1]]]:=biao[j];if (biao[j]-biao[j-1])>d thenbeginbo:=true;writeln(-1);break;end;endelsebeginf[biao[j],biao[j-1]]:=d;inc(g[biao[j]]);h[biao[j],g[biao[j]]]:=biao[j-1];if (biao[j-1]-biao[j])>d thenbeginbo:=true;writeln(-1);break;end;end;end;if bo thencontinue;endelsebeginfor j:=2 to n dobeginf[j-1,j]:=-1;inc(g[j-1]);h[j-1,g[j-1]]:=j;end;bo:=false;for j:=2 to n dobeginif (biao[j]>biao[j-1]) thenbeginf[biao[j],biao[j-1]]:=d;inc(g[biao[j]]);h[biao[j],g[biao[j]]]:=biao[j-1];if (biao[j]-biao[j-1])>d thenbeginbo:=true;writeln(-1);break;end;endelsebeginf[biao[j-1],biao[j]]:=d;inc(g[biao[j-1]]);h[biao[j-1],g[biao[j-1]]]:=biao[j];if (biao[j-1]-biao[j])>d thenbeginbo:=true;writeln(-1);break;end;end;end;if bo thencontinue;end;for j:=1 to n dov[j]:=maxlongint div 3;v[biao[1]]:=0;dg(biao[1],0);writeln(v[biao[n]]);end;close(input);close(output);
end.
复仇者vsX战警之训练相关推荐
- 2020.02.07普及C组模拟赛4
普及C组模拟赛4 **1.权势二进制 ** 题目描述 一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成.例如0,1,101,110011都是权势二进制而2,12,900不是. 当给 ...
- Cinema 4D R20 Essential Training: VFX Cinema 4D R20基本训练:视觉特效 Lynda课程中文字幕
Cinema 4D R20 Essential Training: VFX 中文字幕 Cinema 4D R20基本训练:视觉特效 中文字幕Cinema 4D R20 Essential Traini ...
- 自己动手实现20G中文预训练语言模型示例
起初,我和大部分人一样,使用的是像Google这样的大公司提供的Pre-training Language Model.用起来也确实方便,随便接个下游任务,都比自己使用Embedding lookup ...
- 显卡不够时,如何训练大型网络
https://mp.weixin.qq.com/s?__biz=MzIwNzc2NTk0NQ%3D%3D&chksm=970c2143a07ba855562ca86bfa19b78a26fe ...
- ELECTRA 超过bert预训练NLP模型
论文:ELECTRA: Pre-training Text Encoders As Discriminators Rather Then Generators 本文目前在ICLR 2020盲审中,前几 ...
- python实现glove,gensim.word2vec模型训练实例
20210331 https://blog.csdn.net/sinat_26917383/article/details/83029140 glove实例 https://dumps.wikimed ...
- 分布式训练使用手册-paddle 数据并行
分布式训练使用手册¶ 分布式训练基本思想¶ 分布式深度学习训练通常分为两种并行化方法:数据并行,模型并行,参考下图: 在模型并行方式下,模型的层和参数将被分布在多个节点上,模型在一个mini-batc ...
- 深度学习的分布式训练--数据并行和模型并行
<div class="htmledit_views"> 在深度学习这一领域经常涉及到模型的分布式训练(包括一机多GPU的情况).我自己在刚刚接触到一机多卡,或者分布式 ...
- 谷歌BERT预训练源码解析(二):模型构建
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39470744/arti ...
最新文章
- 分布式系统选主怎么玩
- App小样在手机运行了一下
- ccf画图java详细解析_ccfjava答案
- 客户端相关知识学习(五)之什么是webView
- linux虚拟用户创建目录权限不足,centos7的FTP服务vsftpd里建立虚拟用户不同目录分配不同权限...
- Spring Boot –现代Java应用程序的基础
- pycharm 安装 tensorflow
- 笔记:猎头如何在一周之内“摸清”一个行业
- RocketMQ : MQClientException: producerGroup can not equal DEFAULT_PRODUCER, please specify another
- python 驱动级鼠标_罗技各系鼠标测评(2020年12月更新)
- 网络通信 netstat
- 美国在线计算机硕士申请难度,美国计算机硕士申请条件有哪些?看完这篇文章你就清楚了...
- 第一次使用pyqt5解决的几个小问题
- 如何成为专家-核心的七个特质
- 业界总结 | BERT的花式玩法
- 使用Dism++安装系统(新手勿尝试)
- 《非理性繁荣》读书笔记优秀作文5000字
- 计算机如何进行加减乘除计算—(计算机基础课十三)​​​​​​​​​​​​​​
- abs传感器电压有几伏电_汽车ABS转速传感器工作电压测量方法
- 从零开始搭建一个HTTPS网站
热门文章
- highcharts折线图ajax,7-Highcharts曲线图之折线图
- matlab中的点乘和乘的区别-WZX
- Windows Mobile 开发总结
- 2008.08.24 2008北京奥运,很享受!
- springboot整合swagger方式1——com.spring4all/swagger-spring-boot-starter
- 区块链安全防范方法整理
- 梯度下降、ISTA和FISTA算法收敛速率推导
- RoboMongo 无法连接MongoDB(Exception sending message)(Exception authenticatig)
- 智能问答客服系统的设计和开发(ssm(spring mvc+mybatis)+netty4)
- PyTorch 可视化工具Visdom