1 条题解

  • 0
    @ 2025-8-24 22:48:59

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar lemon_qwq
    **

    搬运于2025-08-24 22:48:59,当前版本为作者最后更新于2023-08-06 18:22:04,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    一开始写了个 7070 多行分讨,找了好久没找到错误,但是 6060 分。

    但是好像不用那么麻烦。

    直接用三个布尔类型的变量模拟这三个幕布即可。

    对于客人需求的幕布,判断这个幕布是否拉下,如果否,则计数器加 11,拉下这个颜色的幕布。

    然后根据颜色判断位置,判断这个幕布图层之上的幕布是否拉上,如果没拉上,改没拉上的幕布的状态,计数器加 11

    代码仅供参考,讲的和写的有点细微的差别,讲的思路应该比写的更简单点。

    #include<bits/stdc++.h>
    using namespace std;
    string s;
    int ans,n;
    bool a[3];//w b r
    int main(){	
    	a[0]=1,a[1]=1,a[2]=1;
    	cin>>n;
    	cin>>s;
    	for(int i=0;i<s.size();i++){
    		if(s[i]=='W'){
    			if(!a[0]){
    				ans++;
    				a[0]=!a[0];
    			}
    		}else if(s[i]=='B'){
    			if(a[0]){
    				ans++;
    				a[0]=!a[0];
    			}
    			if(!a[1]){
    				ans++;
    				a[1]=!a[1];
    			}
    		}else{
    			if(a[0]){
    				ans++;
    				a[0]=!a[0];
    			}
    			if(a[1]){
    				ans++;
    				a[1]=!a[1];
    			}
    			if(!a[2]){
    				ans++;
    				a[2]=!a[2];
    			}
    		}
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    8782
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者