CodeForces - 405B Domino Effect (模拟)

来源:互联网 发布:php 开源 文档 编辑:程序博客网 时间:2024/06/06 00:15

原题地址:
CodeForces-405B

题意描述:
同时将一些多米诺骨牌向左向右推倒,问还剩几个没倒。

题目吐槽:
水题~水题~推倒~推倒~

解决方案:
只需记录上次推倒是向哪个方向推倒的,还有自上次推倒后还有多少是没推倒的(即“.”的数量)。当遇到再次推倒时只有五种情况,分别处理后更新状态。
上次与这次同方向时:没推倒的全倒了。
上次与这次反方向时:没推倒的全不倒。
上次与这次同方向时:如果中间有奇数个则有一个立着,如果有偶数个则全倒。
清空没推倒的变量,更新储存上一次操作的变量。
完工~
补充:起始时将储存上一次操作的置为向左的。
结束时如果记录的操作是向左,应该把最后几个立着的加入答案中。

贴上代码:

#include<iostream>using namespace std;int main(){    int n;    cin>>n;    int num=0,ans=0;    bool op=0;    for(int i=0;i!=n;i++){        char dom;        cin>>dom;        if(dom=='.'){            num++;            continue;        }        if(dom=='R'){            if(op==0){//L                ans+=num;                num=0;                op=1;            }else{                num=0;            }            continue;        }        if(dom=='L'){            if(op==1){//R                if(num%2==1){                    ans++;                }                op=0;                num=0;            }else{                num=0;            }        }    }    if(op==0){        ans+=num;    }    cout<<ans;    return 0;}//Designed by wolf
0 0