2017, X Samara Regional Intercollegiate Programming Contest E. Bonuses and Teleports (思维,模拟)

题意:在\(x\)轴上有很多传送点和钻石,当位于传送点上时,可以传送到其他任意传送点(不记操作数),位于钻石上时可以吃掉它,每次可以移动一个单位,问最少多少次可以吃掉所有的钻石.
题解:对于某个位置上的钻石,我们可以从它左边的传送点走过来,或者从它右边的传送点走过来,又或者从上一个钻石的位置直接走过来,我们每次在这三个距离中取最小即可.具体怎么实现呢?我们首先考虑左右传送点的情况,遍历每个钻石的位置,然后记录当前这个钻石到左传送点或右传送点的最小距离,之后再次遍历钻石位置,比较\(上个钻石走回传送门的距离加上从传送门走到当前钻石的最小距离\)和\(上个钻石的位置直接走到当前位置的距离\),取\(min\)贡献给答案即可.
代码:
int n,m;
ll t[N],b[N];
ll c[N];
ll res; int main() {
//ios::sync_with_stdio(false);cin.tie(0);
scanf("%d %d",&n,&m); for(int i=1;i<=n;++i){
scanf("%lld",&t[i]);
}
for(int i=1;i<=m;++i){
scanf("%lld",&b[i]);
} b[0]=b[m+1]=t[1];
t[n+1]=INF;
int j=0;
ll tmp;
for(int i=1;i<=m;++i){ //求两个tele之间到钻石的min
while(t[j+1]<=b[i]) j++;
if(j==0) c[i]=INF;
else c[i]=b[i]-t[j];
if(j<n) tmp=t[j+1]-b[i];
else tmp=INF;
c[i]=min(c[i],tmp);
} c[0]=c[m+1]=0;
for(int i=1;i<=m+1;++i){
ll dis=abs(b[i]-b[i-1]);
dis=min(dis,c[i-1]+c[i]);
res+=dis;
} printf("%lld\n",res); return 0;
}
2017, X Samara Regional Intercollegiate Programming Contest E. Bonuses and Teleports (思维,模拟)的更多相关文章
- 2017, X Samara Regional Intercollegiate Programming Contest 题解
		
[题目链接] A - Streets of Working Lanterns - 2 首先将每一个括号匹配串进行一次缩减,即串内能匹配掉的就匹配掉,每个串会变成连续的$y$个右括号+连续$z$个左括号 ...
 - 2017, X Samara Regional Intercollegiate Programming Contest  B.Pursuing the Happiness  (string函数)
		
题意:给你一个字符串,可以交换两个字符的位置,问操作后能否在字符串中找到子串\("happiness"\),如果不能,输出交换的两个位置. 题解:这题其实用string中的find ...
 - 2017, X Samara Regional Intercollegiate Programming Contest  M. Last Man Standing  (贪心,双指针)
		
题意:有\(n\)个吃鸡玩家,在某个时间段给你他们每个人的杀敌数,判断数据是否合法,并输出每个人对应的杀敌情况. 题解:刚开始写的是直接暴力枚举,向后去找并且标记,然后存到vector最后输出,结果一 ...
 - Gym100971B Gym100971C Gym100971F Gym100971G Gym100971K Gym100971L(都是好写的题。。。)   IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13, 2016
		
昨天训练打的Gym,今天写题解. Gym100971B 这个题就是输出的时候有点小问题,其他的都很简单. 总之,emnnn,简单题. 代码: #include<iostream> #inc ...
 - IX Samara Regional Intercollegiate Programming Contest F 三分
		
F. Two Points time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
 - Codeforces Gym100971 L.Chess Match (IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13)
		
这个题就是两个队,看最多能赢的个数,然后比较一下,看两个队是都能赢彼此,还是只有一个队赢的可能性最大.表达能力不好,意思差不多... 和田忌赛马有点像,emnnn,嗯. 代码: 1 #include& ...
 - Codeforces Gym100971 K.Palindromization-回文串 (IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13)
		
这个题就是从字符串中删除一个字符,然后剩下的是回文串. 我写的代码虽然长得好看,但是循环里面的比较条件容易想错,太智障了... 一开始写的是计数比较,但是有的时候下标相同的也比较了,为了简单一些,直接 ...
 - Codeforces Gym100971 G.Repair-思维题(切矩形板子) (IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13)
		
这个题就是一块大板子,问你能不能切成两块要求的长宽的两块板子,一开始是按切板子想的,感觉有点麻烦. 直接反过来想,把两块要求的板子拼起来,填成一个大板子,看填出来的这个板子和题目给的板子比较,小于等于 ...
 - Codeforces Gym100971 F.Two Points (IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13)
		
这个题直接推公式就可以. 就是解一元二次方程,用高中学的公式,函数开口向上,求最大值为(4ac-b*b)/4a. 这个题推出来一元二次方程,然后将最大值的公式化简一下.公式很好推. 这个题有疑问,in ...
 
随机推荐
- 【RAC】10grac添加节点,详细步骤
			
RAC物理结构 现在的RAC环境是二个节点: dbp,dbs, 这个实验就是添加节点dbi. dbp,dbs和dbi节点的信息规划如下: 服务器主机名 dbp dbs dbi 公共IP地址(eth0) ...
 - 【ORA】ORA-01756: quoted string not properly terminated
			
出现ORA-01756: quoted string not properly terminated 后,查看SQL是否有中文符号 修改为英文的符号,运行正常
 - os.walk() 遍历目录下的文件夹和文件
			
os.walk(top, topdown=True, onerror=None, followlinks=False) top:顶级目录 os.walk()返回一个三元tupple(dirpath, ...
 - 07--Docker安装Redis
			
1.拉取redis:3.2 docker pull redis:3.2 2.创建redis容器 docker run -p 6379:6379 -v /zhengcj/myredis/data:/da ...
 - PCB导线长宽与电源压降
			
为了计算PCB中电源线走线后的压降,需要知道PCB中使用的铜的电阻率, PCB板中的铜是直接贴上去的铜箔,因此可以当成纯铜(我问了PCB打样的厂家他们的铜的电阻率,但是他们给我说不知道,所以干脆就当成 ...
 - Eureka详解系列(二)--如何使用Eureka(原生API,无Spring)
			
简介 通过上一篇博客 Eureka详解系列(一)--先谈谈负载均衡器 ,我们知道了 Eureka 是什么以及为什么要使用它,今天,我们开始研究如何使用 Eureka. 在此之前,先说明一点.网上几乎所 ...
 - Maven 基础详解
			
一.编写pom.xml文件 Maven项目的核心是pom.xml.POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等等. ...
 - ShardingSphere内核原理 原创 鸽子 架构漫谈 2021-01-09
			
ShardingSphere内核原理 原创 鸽子 架构漫谈 2021-01-09
 - shiro的授权与认证
			
shiro的授权与认证 package com.cy.pj.common.aspect;import java.lang.reflect.Method;import java.util.Arrays; ...
 - chmod a+w .  权限控制    su、sudo  修改文件所有者和文件所在组  添加用户到sudoer列表中   当前用户信息
			
对当前目录对所有用户开放读写权限 chmod a+r . $ sudo chmod -R a+w /usr/lib/python2.7 所有用户添加文件的写权限 [linux]su.sudo.sudo ...