Codeforces Round #598 (Div. 3) C.Platforms Jumping
题意:
一个长为n的河,中间有m个木台,每个木台长为ci,你想从河的左岸跳到右岸,每次你可以往前跳的范围为[x + 1, x + d],你可以移动木台使得可以跳跃,但是木台之间的相对顺序不得改变。
现在问你是否可以跳到右岸?如果不可以输出NO,如果可以输出YES以及河的每个单元所对应的木台序号,如果没有对应木台则为0。
题解:
先将所有木台统一放置到河的最右岸,每个木台之间无空隙,最后一个木台紧贴右岸。
然后判断每一次最大跳跃长度下是否可以成功跳跃(即跳到木台或者右岸上)
ok:输出
no:从最左边的木台开始将其移动到单次跳跃可以到达的最远位置
如果木台放置完仍不能到达右岸,那么不可跳到右岸,否则可以
代码:
#include<bits/stdc++.h>using namespace std;const int M = 1010;
int c[M], pos[M];
int n, m, d;int main()
{scanf("%d%d%d", &n, &m, &d);int sum = 0;for(int i = 1; i <= m; i++){ scanf("%d", &c[i]);sum += c[i];}for(int i = n - sum + 1, j = 1; j <= m; j++){pos[j] = i;i += c[j];}int x = 0, g = 1, flag = 0;while(x < n && g <= m){if(x + d < pos[g]){pos[g] = x + d;x = pos[g] + c[g] - 1;g++; }else break;if(x + d >= n + 1) break;if(x < n && g == m + 1) {flag = 1; break;} }if(flag) puts("NO");else{ puts("YES");for(int i = 1, j = 1; i <= n; i++){if(i == pos[j]){while(i <= pos[j] + c[j] - 1){ printf("%d%c", j, " \n"[i == n]);i++;}i--;j++;}else printf("0%c", " \n"[i == n]);}} return 0;
}
Codeforces Round #598 (Div. 3) C.Platforms Jumping相关推荐
- Codeforces Round #598 (Div. 3) F. Equalizing Two Strings 思维 + 逆序对
传送门 文章目录 题意: 思路: 题意: 给你两个长度为nnn的串a,ba,ba,b,每次可以同时翻转a,ba,ba,b中任意一段长度为L(1≤L≤n)L(1\le L\le n)L(1≤L≤n)的子 ...
- Codeforces Round #598 (Div. 3) E. Yet Another Division Into Teams dp + 输出方案
传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的序列aaa,你需要将其分成若干组,每组的价值为max(ai)−min(ai)\max(a_i)-min(a_i)max(ai)−mi ...
- Codeforces Round #797 (Div. 3)无F
Codeforces Round #797 (Div. 3)无F 这打的也太屎了,白天把G补了才知道简单的很,但f还是没头绪呜呜呜 Problem - A - Codeforces Given the ...
- Codeforces Round #506 (Div. 3)
Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...
- Codeforces Round #563 (Div. 2)/CF1174
Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...
- 构造 Codeforces Round #302 (Div. 2) B Sea and Islands
题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...
- Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...
- Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...
- Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...
最新文章
- 基于Python的HTTPS协议模拟登陆+爬取页面
- ASP.NET AJAX环境的简单构建(ZT)
- Servlet的Cookie值保存与获取
- Python基础(6)_函数
- 十二届 - CSU 1803 :2016(同余定理)
- Android--通知之Toast
- 网关 Spring Cloud Gateway
- (18)System Verilog运算精度补齐示例
- 利用 QQWry.Dat 实现 IP 地址高效检索(PHP)
- EGit/User Guide
- 正交矩阵和Gram-Schmidt正交化
- Maximum call stack size exceeded 如何解决?
- 单片机c语言直接寻址 间接寻址,pic单片机教程之数据存储器的直接间接寻址方式...
- Java多维数组length
- HTTP协议以及返回状态码
- MySQLdb 安装小结
- 初秋进补 粥汤大对决
- Facebook工程师告诉你,如何正确的阅读《算法导论》(CLRS)?
- Django富文本编辑——Ckeditor的配置、使用和踩坑(应该全)
- linux 渗透工具_适用于Linux的十大最佳渗透测试工具
热门文章
- 多媒体课件是不是计算机软件,使用Authorware 开发的《多媒体技术》课件属于( )。...
- 大一微积分笔记整理_微积分大一基础知识经典讲解
- 【量化】基差策略(以甲醇为例)
- 64位 regsrv win10_怎么把Win10注册表恢复初始?
- 第六章.数据结构与算法基础
- 2019年12月的第一天,又是新的开始
- 计算机配置文件保存到哪里,微信文件保存在哪里【设置教程】
- Strapi安装遇到的问题及解决
- Kivy下添加图片来源表示方法
- 速卖通关键词挖掘工具_sem竞价怎么利用工具挖掘更多的关键词?拓词技巧!