原题地址:
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){
//Lans+=num;num=0;op=1;}else{num=0;}continue;}if(dom=='L'){if(op==1){
//Rif(num%2==1){ans++;}op=0;num=0;}else{num=0;}}}if(op==0){ans+=num;}cout<<ans;return 0;
}
//Designed by wolf