CodeForces 1238C(思维+贪心)
题意
https://vjudge.net/problem/CodeForces-1238C
您现在正在玩一个游戏,您初始在一个高度 h 的悬崖
悬崖沿壁高度为 1-h 的这些位置均有平台,平台有两种状态,被选中/不被选中,您可以认为只有被选中的平台才出现在这个悬崖上且你可以站在上面。
初始时有 n 个平台为被选中,保证平台 h 被选中,您每次可以进行一个操作,不妨假设您当前站在平台 x 处(此时平台 x 一定被选中),即让平台 x 变成未被选中,而平台x−1 变成相反的状态。
您非常的脆弱,所以不能跌落超过2的高度,比如您可以从高度为3的平台跌落到高度为1的平台,但不能从高度为3的平台跌落到地面
现在您想要回到地面,即高度为0
您可以使用一种魔力水晶,即其可以将任意一个平台修改成指定的状态。
现在希望您求出回到地面最少需要使用多少颗魔力水晶?
思路
题意简单来说就是踩在选中的平台可以按开关,使得紧挨着的下面那个平台状态反转,不能连续跳超过2个平台。
如果隔了很远才有一个平台,显然可以按一次开关下降一格,因为下面那个平台会由未选中反转到选中,所以可以踩。我们一直这样做,直到跳到选中的平台的上一个,设此时位置为x,且x和x-1是有平台的,下面的为x-1,x-2。
如果x-2有平台,那么可以按x的开关,然后就跳到x-2了。
如果x-2没有平台,那么按了x的开关后,跳的距离肯定是大于2的了,因为x-1也收回了平台。这种情况就死了,需要一个水晶使得x-1的状态先改为未选中,这样就可以像开始说的那样往下一步一步的跳,直到跳到有平台的上一格,那么情况又和上面一样了。
总结,除去第一个平台(h),往下跳,每遇到两个距离>1的平台(x-1有平台,x-2没有平台的情况),那么需要一个水晶,跳到x-2。否则就跳过这些平台,跳到x-3平台的上一格继续考虑。
代码
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
const int N=200005;
const int mod=1e9+7;
const double eps=1e-8;
const double PI = acos(-1.0);
#define lowbit(x) (x&(-x))
ll p[N];
int main()
{
std::ios::sync_with_stdio(false);
int q;
cin>>q;
while(q--)
{
ll h,n;
cin>>h>>n;
for(int i=1;i<=n;i++)
cin>>p[i];
ll cnt=0;
p[n+1]=0;
for(int i=2;i<=n;i++)
{
if(p[i]-p[i+1]>1)
cnt++;
else i++;
}
cout<<cnt<<endl;
}
return 0;
}
CodeForces 1238C(思维+贪心)的更多相关文章
- Buy Low Sell High CodeForces - 867E (思维,贪心)
大意: 第i天可以花$a_i$元买入或卖出一股或者什么也不干, 初始没钱, 求i天后最大收益 考虑贪心, 对于第$x$股, 如果$x$之前有比它便宜的, 就在之前的那一天买, 直接将$x$卖掉. 并不 ...
- Codeforces 922 思维贪心 变种背包DP 质因数质数结论
A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...
- Codeforces 1093C (思维+贪心)
题面 传送门 题目大意: 有一个长n(n为偶数)的序列a 已知a满足 \(a_1≤a_2≤⋯≤a_n\) 给出一个长度为\(\frac{n}{2}\) 的序列b,定义\(b_i=a_i+a_{n-i+ ...
- Sorted Adjacent Differences(CodeForces - 1339B)【思维+贪心】
B - Sorted Adjacent Differences(CodeForces - 1339B) 题目链接 算法 思维+贪心 时间复杂度O(nlogn) 1.这道题的题意主要就是让你对一个数组进 ...
- Codeforces Round #768 (Div. 2) D. Range and Partition // 思维 + 贪心 + 二分查找
The link to problem:Problem - D - Codeforces D. Range and Partition time limit per test: 2 second ...
- CodeForces - 158B.Taxi (贪心)
CodeForces - 158B.Taxi (贪心) 题意分析 首先对1234的个数分别统计,4人组的直接加上即可.然后让1和3成对处理,只有2种情况,第一种是1多,就让剩下的1和2组队处理,另外一 ...
- 2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest- H. Rikka with A Long Colour Palette -思维+贪心
2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest- H. Rikka with A Long Colour Palette -思维+贪心 [Proble ...
- E. The Contest ( 简单DP || 思维 + 贪心)
传送门 题意: 有 n 个数 (1 ~ n) 分给了三个人 a, b, c: 其中 a 有 k1 个, b 有 k2 个, c 有 k3 个. 现在问最少需要多少操作,使得 a 中所有数 是 1 ~ ...
- 【CF1256】Codeforces Round #598 (Div. 3) 【思维+贪心+DP】
https://codeforces.com/contest/1256 A:Payment Without Change[思维] 题意:给你a个价值n的物品和b个价值1的物品,问是否存在取物方案使得价 ...
随机推荐
- c语言从入门到精通的几个阶段
本文主要结合往期学员学习阶段,因材施教整理的几个阶段学习路线知识点: 1.初级教程 初级c语言入门教程比较适合零基础的小白,这个周期一般在22天,度过这个阶段的小白,基本上已经拥有了编程思维,且能开发 ...
- python yield关键词使用总结
python yield关键词使用总结 by:授客 QQ:1033553122 测试环境 win10 python 3.5 yield功能简介 简单来说,yield 的作用就是把一个函数变成一个 ge ...
- JS---DOM---点击操作---节点的方式---案例
点击操作---节点的方式---案例 案例1:点击按钮,设置p变色---节点的方式做 <!DOCTYPE html> <html lang="en"> < ...
- layui table 表格查询无效问题
[热身话题] 在开发的过程中,大量数据的展示大多采用表格的方式,直观,清晰.在这里,我也使用过一些框架Bootstrap.table ,Dev table ,layui table.本次采用的layu ...
- Android五大布局详解——TableLayout(表格布局)
TableLayout 前面所学的LinearLayout和RelativeLayout两大布局已经完全适用于各种开发条件下,其他的布局仅供参考学习,毕竟知识就是力量,以后的开发过程中万一遇到也能游刃 ...
- Spring Boot Mybatis 最基本使用mysql存储过程
首先声明:只是用最简单的方法大致了解如何用存储过程开发,如果需要查看存储过程创建语法的自行百度搜索 一.首先创建最基本的数据库 CREATE TABLE `t_user` ( `id` varchar ...
- 云K8S - AWS容器库ECR(ERS)编排ECS-EKS以及阿里云编排ACS-ACK
云K8S相关 AWS 部分-ECR(ERS) ECS EKS 20180824 Chenxin AWS的容器编排目前分为 ECS 和 EKS 两种. AWS价格说明 Fargate模式的ECS,换算成 ...
- Linux tree
tree命令,是大小写敏感的.常用的是:1.tree -C 颜色显示 2.tree -f 显示文件全路径ls -R也可以显示树结构,但没上面 清晰 3.tree -L n n 是数字,表示显示几层 4 ...
- MySQL多实例安装教程
目录 MySQL的多实例 实验准备: 准备阶段: 实验阶段 MySQL的多实例 实验准备: 1. 一个干净的centos7系统 2. 关闭防火墙和selinux 3. 之前已经二进制安装过的MySQL ...
- 【python之路.一】基础
数学操作符 数据类型 字符串复制(*复制次数int).连接(+) 该类操作只能同为字符串类型,否则需要强制转换类型 变量名规则 (驼峰式变量名&下划线式均可) # 注释 BIF(built-i ...