【2017.7.10普及】复仇者vsX战警之训练(train) 
(File IO): input:attack.in output:attack.out

时间限制:  1000 ms  空间限制:  262144 KB  具体限制  

Goto ProblemSet

题目描述

月球上反凤凰装甲在凤凰之力附身霍普之前,将凤凰之力打成五份,分别附身在X战警五大战力上面辐射眼、白皇后、钢力士、秘客和纳摩上(好尴尬,汗)。
在凤凰五使徒的至高的力量的威胁下,复仇者被迫逃到昆仑的一座山上,因为凤凰五使徒监视不到那里。
霍普加入了复仇者,为了磨练自己,她在n个山峰之间跳跃。
这n个山峰在一条直线上,每个山峰都有不同的高度,只知道这些山峰的相对位置。霍普可以将这些山峰左右移动但不能改变他们的相对位置(要保证两两山峰间距为整数且大于等于1)。霍普要从最矮的山峰开始跳,每次跳向第一个比现在她所在的山峰高的山峰,一共跳n-1次,由于能力有限,每次跳跃的水平距离小于等于d。
霍普想知道如何移动这些山峰,使得在可以经过所有的山峰并跳到最高的山峰上的基础下,又要使最矮的山峰和最高的山峰的水平距离最远,霍普要你求出最远的水平距离。如果无论如何也不能经过所有的山峰并跳到最高的山峰上,那么输出-1。

输入

输入文件名为attack.in。
本题每个测试点有多组数据,
在第一行中有一个整数t,表示数据的数目(t<=500)
对于每组数据:
第一行包含两个整数n(1≤n≤1000)和d(1≤d≤1000000)。
下一行包含n个整数,给出n个房子的高度,以便它们应该被移动。在每个数据中,所有的高度都是唯一的。

输出

输出文件名为attack.out。
输出共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战警之训练相关推荐

  1. 2020.02.07普及C组模拟赛4

    普及C组模拟赛4 **1.权势二进制 ** 题目描述 一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成.例如0,1,101,110011都是权势二进制而2,12,900不是. 当给 ...

  2. Cinema 4D R20 Essential Training: VFX Cinema 4D R20基本训练:视觉特效 Lynda课程中文字幕

    Cinema 4D R20 Essential Training: VFX 中文字幕 Cinema 4D R20基本训练:视觉特效 中文字幕Cinema 4D R20 Essential Traini ...

  3. 自己动手实现20G中文预训练语言模型示例

    起初,我和大部分人一样,使用的是像Google这样的大公司提供的Pre-training Language Model.用起来也确实方便,随便接个下游任务,都比自己使用Embedding lookup ...

  4. 显卡不够时,如何训练大型网络

    https://mp.weixin.qq.com/s?__biz=MzIwNzc2NTk0NQ%3D%3D&chksm=970c2143a07ba855562ca86bfa19b78a26fe ...

  5. ELECTRA 超过bert预训练NLP模型

    论文:ELECTRA: Pre-training Text Encoders As Discriminators Rather Then Generators 本文目前在ICLR 2020盲审中,前几 ...

  6. python实现glove,gensim.word2vec模型训练实例

    20210331 https://blog.csdn.net/sinat_26917383/article/details/83029140 glove实例 https://dumps.wikimed ...

  7. 分布式训练使用手册-paddle 数据并行

    分布式训练使用手册¶ 分布式训练基本思想¶ 分布式深度学习训练通常分为两种并行化方法:数据并行,模型并行,参考下图: 在模型并行方式下,模型的层和参数将被分布在多个节点上,模型在一个mini-batc ...

  8. 深度学习的分布式训练--数据并行和模型并行

    <div class="htmledit_views"> 在深度学习这一领域经常涉及到模型的分布式训练(包括一机多GPU的情况).我自己在刚刚接触到一机多卡,或者分布式 ...

  9. 谷歌BERT预训练源码解析(二):模型构建

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39470744/arti ...

最新文章

  1. 分布式系统选主怎么玩
  2. App小样在手机运行了一下
  3. ccf画图java详细解析_ccfjava答案
  4. 客户端相关知识学习(五)之什么是webView
  5. linux虚拟用户创建目录权限不足,centos7的FTP服务vsftpd里建立虚拟用户不同目录分配不同权限...
  6. Spring Boot –现代Java应用程序的基础
  7. pycharm 安装 tensorflow
  8. 笔记:猎头如何在一周之内“摸清”一个行业
  9. RocketMQ : MQClientException: producerGroup can not equal DEFAULT_PRODUCER, please specify another
  10. python 驱动级鼠标_罗技各系鼠标测评(2020年12月更新)
  11. 网络通信 netstat
  12. 美国在线计算机硕士申请难度,美国计算机硕士申请条件有哪些?看完这篇文章你就清楚了...
  13. 第一次使用pyqt5解决的几个小问题
  14. 如何成为专家-核心的七个特质
  15. 业界总结 | BERT的花式玩法
  16. 使用Dism++安装系统(新手勿尝试)
  17. 《非理性繁荣》读书笔记优秀作文5000字
  18. 计算机如何进行加减乘除计算—(计算机基础课十三)​​​​​​​​​​​​​​
  19. abs传感器电压有几伏电_汽车ABS转速传感器工作电压测量方法
  20. 从零开始搭建一个HTTPS网站

热门文章

  1. highcharts折线图ajax,7-Highcharts曲线图之折线图
  2. matlab中的点乘和乘的区别-WZX
  3. Windows Mobile 开发总结
  4. 2008.08.24 2008北京奥运,很享受!
  5. springboot整合swagger方式1——com.spring4all/swagger-spring-boot-starter
  6. 区块链安全防范方法整理
  7. 梯度下降、ISTA和FISTA算法收敛速率推导
  8. RoboMongo 无法连接MongoDB(Exception sending message)(Exception authenticatig)
  9. 智能问答客服系统的设计和开发(ssm(spring mvc+mybatis)+netty4)
  10. PyTorch 可视化工具Visdom