首页 > 其他分享 >题解:CF917A The Monster

题解:CF917A The Monster

时间:2024-12-20 21:10:11浏览次数:3  
标签:cnt Monster ++ 题解 flag 括号 int CF917A --

思路

分别枚举连续子序列所有起点的可能。

用变量来记录左括号和右括号的数量,左括号 \(+1\),右括号 \(-1\)。

对于问号,则通过当前左括号和右括号的数量来判断应该变为右括号还是变为左括号。

当右括号数量大于左括号数量时,就可以停止枚举以当前起点为起点的连续子序列了,因为无论怎么枚举都是不合法的。

如果当前子序列内的左括号与右括号数量相等,则让答案加一。

AC 代码

#include<bits/stdc++.h>
using ll = long long;
using namespace std;
string s;
int cnt,ans,flag;

int main(){
	// freopen("text.in","r",stdin);
	// freopen("text.out","w",stdout);
	ios::sync_with_stdio(0),cout.tie(0),cin.tie(0);
    cin >> s;
    int n = s.size();
    for(int i = 0; i < n;i++){
        cnt = 0;
        flag = 0; 
        for(int j = i; j < n;j++){
            if(s[j] == '(')cnt++;
            if(s[j] == ')')cnt--;
            if(s[j] == '?'){
                if(cnt > 0)cnt--,flag++;
                else cnt++;
            } 
            if(cnt == 0)ans++;
            else if(cnt < 0){
            	if(flag){
            		cnt += 2;
            		flag--;
            	}else{
            		break; 
            	}
            }
        }	 
    }	 
    cout<<ans;
    return 0;
}

标签:cnt,Monster,++,题解,flag,括号,int,CF917A,--
From: https://www.cnblogs.com/zenoszheng/p/18619977

相关文章

  • 题解:CF603A Alternative Thinking
    思路你猜这个题为什么是A题?很思维的解法。只允许翻转一次,所以最多只会在原答案上加\(2\)。所以我们来讨论仅有的三种可能:加\(2\),要有两段连续的\(0\)或\(1\)。加\(1\),要有一段连续的\(0\)或\(1\)。不加,没有连续的\(0\)或\(1\)。我们的代码模拟上面的三种......
  • 题解:CF626B Cards
    思路枚举三种能够得到该颜色的方法。全是该颜色的卡牌。另外两种卡牌的数量都大于等于一张。另外的两种卡牌,一种大于等于两张,一种为零张,该颜色的卡牌大于等于一张。我们用三个变量来记录每种卡牌出现的次数,然后按照以上的三种方法模拟即可。AC代码#include<bits/stdc++.......
  • 题解:CF1540A Great Graphs
    思路CF思维题。因为我们要让边权值最小,所以可以利用贪心思想先将数组\(d\)进行升序排序。然后再预处理出每一条边的权重。其次我们来想一下如何处理答案,因为这道题说图中不能出现负环和重边,所以我们可以通过加反方向负边的方法来解决这道题。因为对于一条边,这条边之后的所......
  • 题解 - 趣味填空
    题目描述小华的寒假作业上,有这样一个趣味填空题:给出用等号连接的两个整数,如“1234=492”。当然,现在这个等式是不成立的。请你在等号左边整数中的某个位置尝试插入一个乘号,看有没有可能让等式成立。以上面的式子为例,如果写成1234=492,这样就正确了。现在请你编写一个程序......
  • Codeforces Global Round 28 / cf contest 2048 题解
    比赛链接A.KevinandCombinationLock观察操作难度(个人感觉)★☆☆☆☆注意到两个操作都不改变\(\%33\)的值,因此要求原数\(\%33==0\),显然这是充分的。B.KevinandPermutation观察操作难度(个人感觉)★☆☆☆☆一个点的"势力范围"是以\([p,p+k)\)为右端点的......
  • CF593B Anton and Lines 题解
    Tag:数学题目描述【题面大意】给定\(n\)条形如\(y=k_ix+b_i\)的直线,你需要判断是否存在两条直线\(a,b\),使\(a,b\)的交点\((x_0,y_0)\)满足\(x_1<x_0<x_2\)。【数据规模与约定】\(1\len\le10^5\),\(-10^6\lex_1,x_2,k_i,b_i\le10^6\)。数据保证对于每两条直线......
  • [JOISC2019] 聚会 题解
    随机化好题,但是不会证。考虑把树看成一条链,链的每个点上缀了一棵树。那么先随机出两个点\(x,y\)(实际上随机一个点,另一个点固定似乎更好?),然后对于当前这棵树上的任意点\(z\),都让他进行一次询问,答案为\(o=Q(x,y,z)\)。那么当\(o=z\)时,显然\(z\)在链上,否则\(z\)在\(o\)......
  • 博弈论+ybt题解
    NIM游戏及其证明题目描述即为T1,不多赘述有向图游戏及SG函数而对于由\(n\)个有向图游戏组成的组合游戏,设它们的起点分别为\(S_1,S_2,\ldots,S_n\),则有定理:当且仅当\(\text{SG}(s_1)\oplus\text{SG}(s_2)\oplus\ldots\oplus\text{SG}(s_n)\neq0\)时,这个游戏是先手......
  • (自用)[USACO2023-JAN-Bronze] T1 LEADERS 题解
    题目描述农夫约翰有\(N(2≤N≤10^5)\)头奶牛,每一头奶牛的品种是更赛牛G或荷斯坦牛H中的一种。每一头奶牛都有一个名单,第\(i\)头奶牛的名单上记录了从第\(i\)头奶牛(即自己)到第\(E_i(i≤E_i≤N)\)头奶牛的连续所有奶牛。每一种奶牛都有且仅有一位“领导者”,对于某一头牛......
  • [CF494D] Birthday 题解
    首先\(S(u)\)显然是\(u\)的子树。假如\(u\)是定点,问题转化为区间求平方和,十分简单。于是我们用线段树维护区间平方和,支持区间加,然后离线问题,在\(u\)的位置处理即可。线段树从\(fa\)转移到\(u\)是极度简单的。时间复杂度\(O(n\logn)\)。#include<bits/stdc++.h>......