码迷,mamicode.com
首页 > 其他好文 > 详细

C. Standard Free2play --div

时间:2019-10-11 20:30:05      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:http   依次   台阶   turn   ORC   while   方式   class   test   

https://codeforces.com/contest/1238/problem/C

题意:下台阶的时候只有一种方式,拉动当前台阶x的 level,然后当前的台阶关闭,调到下边的台阶x-1,如果台阶x-1是打开的,那么会使他关闭,那么只能到达x-1下面打开的台阶y, 然后判断落差是否大于2,如果大于二的话,只能用一个magic使x-2的台阶打开,然后依次判断。

题解:只要判断x-1台阶和x-1下边的台阶是否相邻,如果相邻的话,直接跳到x-2.否则要用一个magic,并跳到x-1。

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=2E5+7;
int arr[N];
void solve(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=m;i++) scanf("%d",&arr[i]);
    int ans=0;
    arr[m+1]=0;
    //当前状态是h,即i=1,只要判断arr[i+1]和arr[i+2]是否相邻就可以了
    //如果相邻的话直接到arr[i+2],否则用一个魔法水晶,并到arr[i+1];
    for(int i=2;i<=m;i++){
        if(arr[i]==arr[i+1]+1)    i++;
        else ans++;
    }
    cout<<ans<<endl;
}
int main(){
    int n;
    cin>>n;
    while(n--) solve();
    return 0;
}

 

C. Standard Free2play --div

标签:http   依次   台阶   turn   ORC   while   方式   class   test   

原文地址:https://www.cnblogs.com/Accepting/p/11656305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!