题意

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(思维+贪心)的更多相关文章

  1. Buy Low Sell High CodeForces - 867E (思维,贪心)

    大意: 第i天可以花$a_i$元买入或卖出一股或者什么也不干, 初始没钱, 求i天后最大收益 考虑贪心, 对于第$x$股, 如果$x$之前有比它便宜的, 就在之前的那一天买, 直接将$x$卖掉. 并不 ...

  2. Codeforces 922 思维贪心 变种背包DP 质因数质数结论

    A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...

  3. Codeforces 1093C (思维+贪心)

    题面 传送门 题目大意: 有一个长n(n为偶数)的序列a 已知a满足 \(a_1≤a_2≤⋯≤a_n\) 给出一个长度为\(\frac{n}{2}\) 的序列b,定义\(b_i=a_i+a_{n-i+ ...

  4. Sorted Adjacent Differences(CodeForces - 1339B)【思维+贪心】

    B - Sorted Adjacent Differences(CodeForces - 1339B) 题目链接 算法 思维+贪心 时间复杂度O(nlogn) 1.这道题的题意主要就是让你对一个数组进 ...

  5. 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 ...

  6. CodeForces - 158B.Taxi (贪心)

    CodeForces - 158B.Taxi (贪心) 题意分析 首先对1234的个数分别统计,4人组的直接加上即可.然后让1和3成对处理,只有2种情况,第一种是1多,就让剩下的1和2组队处理,另外一 ...

  7. 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 ...

  8. E. The Contest ( 简单DP || 思维 + 贪心)

    传送门 题意: 有 n 个数 (1 ~ n) 分给了三个人 a, b, c: 其中 a 有 k1 个, b 有 k2 个, c 有 k3 个. 现在问最少需要多少操作,使得 a 中所有数 是 1 ~ ...

  9. 【CF1256】Codeforces Round #598 (Div. 3) 【思维+贪心+DP】

    https://codeforces.com/contest/1256 A:Payment Without Change[思维] 题意:给你a个价值n的物品和b个价值1的物品,问是否存在取物方案使得价 ...

随机推荐

  1. Python - 文件分发小程序

    一.概述 该小程序实现从源端到目标端的文件一键拷贝,源端和目标段都在一台电脑上面,只是目录不同而已 二.参数文件说明 1. settings.txt的说明 a. 通过配置settings.txt,填源 ...

  2. C# -- LinkedList的使用

    C# -- LinkedList的使用 private static void TestLinkList() { LinkedList<Person> linkListPerson = n ...

  3. Java生鲜电商平台-优惠券功能设计与开发(小程序/APP)

    Java生鲜电商平台-优惠券功能设计与开发(小程序/APP) 说明:Java生鲜电商平台-优惠券功能设计与开发(小程序/APP) 目录 1.项目背景与需求分析 2.需求目的与功能点列表 3.业务逻辑 ...

  4. [转]UiPath Invoke Code

    本文转自:https://dotnetbasic.com/2019/08/uipath-invoke-code.html We will learn step by step tutorial for ...

  5. 理解 Flutter 中的 Key

    概览 在 Flutter 中,大概大家都知道如何更新界面视图: 通过修改 Stata 去触发 Widget 重建,触发和更新的操作是 Flutter 框架做的. 但是有时即使修改了 State,Flu ...

  6. Shell批量SSH免交互登录认证

    脚本实现功能:批量或单个SSH免交互登录认证 脚本应用场景:当部署集群时,大多数实现要配置好管理节点与从节点的SSH免交互登录,针对这样的情况,写了下面脚本,简化工作. 脚本支持系统:Ubuntu和C ...

  7. pymysql用法,Python连接MySQL数据库

    Pymysql模块是专门用来操作mysql数据库的模块,使用前需要安装,安装指令:pip install pymysql 操作流程: 第一步:import pymysql 第二步:获取数据库的连接 , ...

  8. springboot模板

    1.thymeleaf模板 2.Freemarker模板 Thymeleaf模板 首先导入依赖 <dependency> <groupId>org.springframewor ...

  9. 数组类的创建——DynamicArray.h

    完成DynamicArray类的具体实现 DynamicArray设计要点——类模板 动态确定内部数组空间的大小 实现函数返回数组长度 拷贝构造和赋值操作 DynamicArray类的声明 templ ...

  10. alter对话框处理:

    from selenium import webdriverd = webdriver.Firefox()d.get('file://C:\\我的代码\\selenium自动化测试\\alter.ht ...