题目大意:

有一个墙,高度为h,在每一个高度处都有一个踏板,有的踏板是隐藏着的,有的是伸出来的,小人站在h高度处(题目保证h高度处的踏板一定是伸出来的),这个小人每站到一个踏板上,就可以点一个开关,将他所在的踏板收回,并将下一个高度上的踏板改变状态。小人只能最多落下两层楼,如果从高度为x处落到高度为x-3处那就会摔的稀碎,当然你肯定不想让他摔死是不是,要是不想摔死就充钱!每充一块钱就能指定一个踏板并改变他的状态。现在问你最少充多少钱能不让小人摔死。

做法:贪心,从第一个挡板开始往下跳,如果下面一直没有挡板,那就一直往下跳,直到跳到有挡板的位置,我们先停在他的上一个高度处,所以现在的状态是,小人处于x高度处,x-1高度处有挡板,那么我们讨论x-2高度处有没有挡板:

1.如果x-2高度处有挡板,那么我们在x处按动开关,x和x-1高度处的挡板都收起,小人恰好落在x-2高度处的挡板,此时站在x-2高度处要考虑的问题又和站在x-1高度处要考虑的问题一样了

2.如果x-2高度处没有挡板,那很显然x和x-1处的挡板收起后小人就嗝屁了,所以我们冲一块钱,让x-1高度处的挡板收起来,然后再按动开关的时候x-1高度处的挡板恰好伸出,小人正好落上去,接下来的操作仍然相同。

综上所述,问题的焦点就在于x-1处挡板下面的那个挡板是和它紧挨着还是隔着一些高度。如果紧挨着就跳过这个问题,否则就冲一块钱。是不是很简单啊,老子想秃噜了头皮也没想出来,最后还是看了老外的代码,&#*%^&_*,果然年纪大了不中用了。

#include<iostream>
#include<cstdio>
#define maxn 200010
using namespace std;
int a[maxn],n,h,T;
int main(){
scanf("%d",&T);
while(T--){
int ans=;
scanf("%d%d",&h,&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
a[++n]=;
for(int i=;i<=n;i++){
if(a[i]-a[i+]>)ans++;
else i++;
}
printf("%d\n",ans);
}
return ;
}

CF-1238 C.Standard Free2play的更多相关文章

  1. Educational Codeforces Round 74 (Rated for Div. 2) C. Standard Free2play

    链接: https://codeforces.com/contest/1238/problem/C 题意: You are playing a game where your character sh ...

  2. C. Standard Free2play --div

    https://codeforces.com/contest/1238/problem/C 题意:下台阶的时候只有一种方式,拉动当前台阶x的 level,然后当前的台阶关闭,调到下边的台阶x-1,如果 ...

  3. Codeforces 1238C. Standard Free2play

    传送门 题目别看错了,好像挺多人都读错了... 然后显然可以贪心,只有在需要用 $\text{magic crystals}$ 的时候才用 那么直接模拟即可 如果初始相邻两个突出的平台高度不连续那么我 ...

  4. Educational Codeforces Round 74

    目录 Contest Info Solutions A. Prime Subtraction B. Kill 'Em All C. Standard Free2play D. AB-string E. ...

  5. Educational Codeforces Round 74 (Rated for Div. 2)

    传送门 A. Prime Subtraction 判断一下是否相差为\(1\)即可. B. Kill 'Em All 随便搞搞. C. Standard Free2play 题意: 现在有一个高度为\ ...

  6. Educational Codeforces Round 74 (Rated for Div. 2)【A,B,C【贪心】,D【正难则反的思想】】

    A. Prime Subtractiontime limit per test2 secondsmemory limit per test256 megabytesinputstandard inpu ...

  7. Educational Codeforces Round 74 (Rated for Div. 2)补题

    慢慢来. 题目册 题目 A B C D E F G 状态 √ √ √ √ × ∅ ∅ //√,×,∅ 想法 A. Prime Subtraction res tp A 题意:给定\(x,y(x> ...

  8. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  9. CF memsql Start[c]UP 2.0 A

    CF memsql Start[c]UP 2.0 A A. Golden System time limit per test 1 second memory limit per test 256 m ...

随机推荐

  1. As Simple as One and Two

    time limit per test3 secondsmemory limit per test256 megabytesinput: standard inputoutput: standard ...

  2. 12306抢票带来的启示:看我如何用Go实现百万QPS的秒杀系统

    本文为开源实验性工程:“github.com/GuoZhaoran/spikeSystem”的配套文章,原作者:“绘你一世倾城”,现为:猎豹移动php开发工程师,感谢原作者的技术分享. 1.引言 Go ...

  3. Elastic:使用Heartbeat进行Uptime监控

    Elastic:使用Heartbeat进行Uptime监控 Elastic在6.5的版本中推出Heartbeat.Heartbeat 也就是我们通常所说的心跳.我们知道在医院,医生是用听心跳来判断一个 ...

  4. solidity 智能合约之间的调用

    智能合约之间的调用 在区块链上,有些功能往往无法通过一个智能合约完成,此时便会用到智能合约之间的调用.本篇文章带大家通过具体示例来了解一下智能合约之间的调用. 在智能合约的编译过程中,有两种情况:调用 ...

  5. go-客户信息关系系统

    客户信息关系系统 项目需求分析 1) 模拟实现基于文本界面的< 客户信息管理软件>. 2) 该软件能够实现对客户对象的插入.修改和删除(用切片实现),并能够打印客户明细表 项目的界面设计 ...

  6. centos 7 搭建vsftp

    一.FTP简介 1.ftp 概述                                                FTP:(file  transfer  protocol文件传输协议) ...

  7. Vuex基本使用的总结--转载

    在 Vue 的单页面应用中使用,需要使用Vue.use(Vuex)调用插件.使用非常简单,只需要将其注入到Vue根实例中. import Vuex from 'vuex' Vue.use(Vuex) ...

  8. laravel 之路由和MVC

    一.路由 Routes\; 1. 路由简介 简单的说就是将用户的请求转发给相应的程序进行处理. 作用就是建立url和程序之间的映射 请求类型get . post.put.patch.delete 2. ...

  9. mac 下删除 python 2.7

    删除 mac os 自带的 python 2.7, 以方便安装 python 3 的虚拟环境. 删除 Python 2.7 framework   sudo rm -rf /Library/Frame ...

  10. Web服务器—Apache

    Apache配置文件:httpd.conf文件 # 指定Apache的安装路径,此选项参数值在安装Apache时系统会自动把Apache的路径写入. ServerRoot "/www/ser ...