1. 程式人生 > >Codeforces 918C - The Monster

Codeforces 918C - The Monster

nbsp com ems long bre push_back size col lan

918C - The Monster

思路1:

技術分享圖片

右鍵在新窗口打開圖片

代碼:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    string s;
    cin>>s;
    int ans=0;
    
for(int i=0;i<s.size();i++){ int score=0,q=0; for(int j=i;j<s.size();j++){ if(s[j]==()score++; else if(s[j]==))score--; else q++; while(q>0&&q>score)q--,score++; if(score<0)break; if
((j-i+1)%2==0&&q>=score)ans++; } } cout<<ans<<endl; return 0; }

思路2:

結論:

技術分享圖片

證明見codeforces.com/blog/entry/57420

代碼:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))

const
int N=5e3+5; int cnt[N][N]; int main(){ ios::sync_with_stdio(false); cin.tie(0); string s; cin>>s; int ans=0; for(int i=0;i<s.size();i++){ int l=0,r=0; for(int j=i;j<s.size();j++){ if(s[j]==(||s[j]==?)l++; else r++; if(r>l)break; cnt[i][j]++; } } for(int i=0;i<s.size();i++){ int l=0,r=0; for(int j=i;j>=0;j--){ if(s[j]==)||s[j]==?)r++; else l++; if(l>r)break; cnt[j][i]++; } } for(int i=0;i<s.size();i++){ for(int j=i;j<s.size();j++){ if((j-i+1)%2==0&&cnt[i][j]==2)ans++; } } cout<<ans<<endl; return 0; }

Codeforces 918C - The Monster