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的物品,问是否存在取物方案使得价 ...
随机推荐
- webpack动态加载打包chunk命名
最近,遇到复杂h5页面开发,为了优化H5首屏加载速度,想到使用按需加载的方式,减少首次加载的JavaScript文件体积,于是将处理过程在这里记录一下,涉及到的主要是以下三点: 使用Webpack如何 ...
- C# Thread 线程
Thread 创建和控制线程,设置其优先级并获取其状态 Thread构造函数接收一个无参数或带一个object类型参数的委托 { Console.WriteLine("), DateTim ...
- IT兄弟连 HTML5教程 CSS3属性特效 3D变换2
3 perspective-origin景深基点 perspective-origin景深基点属性时3D变形中另一个重要属性,主要用来决定perspective属性的源点角度.它实际上设置了X轴和Y ...
- ASP.NET Core gRPC 健康检查的实现方式
一. 前言 gRPC 服务实现健康检查有两种方式,前面在此文 ASP.NET Core gRPC 使用 Consul 服务注册发现 中有提到过,这里归纳整理一下.gRPC 的健康检查,官方是定义了标准 ...
- springboot + springcloud +nacos实战
首先从整个软件的功能和应用场景来说,nacos更像consul,而非eureka,nacos设计的时候自带的配置中心功能,让我们省下了去搞springcloud config的时间,但这里并不是说na ...
- Android TitleBar推荐
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/206 Android TitleBar推荐 这段时间在帮别 ...
- 1、netty入门说明
netty中的例子,基本模式都是:server -> Initializer -> Handler . 在server中去启动线程,打开端口,设置initializer,和一些启动的参数配 ...
- redis5.0.0功能介绍以及主从集群、哨兵搭建
这两天突然想起redis,索性就再尝试一下搭建最新版本的redis,过程有点艰辛呀,记录一下,供自己和大家今后搭建做参考. 一.为什么用Redis? 我自己总结了一下: 1.基于内存实现的key-va ...
- GithubPages+Hexo博客搭建记录
目录 前言 安装Node.js 安装Git 安装Hexo 查看效果 建立Github Pages 注册Github帐户 建立托管博客的仓库 制作SSH密钥 添加公钥到Github 测试连接 把本地的博 ...
- 如何在Mac上使用Siri
在您的iPhone上,要求Siri执行命令很简单.但是,如果在计算机上工作时附近没有iPhone,会发生什么情况?您也可以在Mac上使用Siri.快速简便,使其成为iMac或MacBook的完美伴侣. ...