CF3D Least Cost Bracket Sequence 题解——贪心
Posted dzn2004
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF3D Least Cost Bracket Sequence 题解——贪心相关的知识,希望对你有一定的参考价值。
题目连接:https://www.luogu.com.cn/problem/CF3D
——————————————————————————————————————————————————————————
这一题是一个贪心的题目。 先把字符串中的问号都换成右括号,扫过去,如果左括号比右括号多(因为在任意一个位置上,它前面的左括号都不可能比右括号多,在最后一位要相等),则在前面所有待定(原是有问号,但现在改成右括号的位子)上找左右差值最小的,换掉(因为只要在一个位置上左括号右括号相等,就是合法的)。
——————————————————————————————————————————————————————————————
代码:
1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 #include <queue> 5 #include <iostream> 6 #define ll long long 7 using namespace std; 8 priority_queue <pair<int,int> > Q; 9 int a[50010],b[50010]; 10 string s; 11 string str; 12 int main(){ 13 //freopen("a.in","r",stdin); 14 std::ios::sync_with_stdio(false); 15 cin>>s; 16 int len=0;int l=0,r=0;str=s; 17 for(int i=0;i<s.size();i++){ 18 if(s[i]==‘(‘) l++; 19 else if(s[i]==‘)‘) r++; 20 if(s[i]==‘?‘){ 21 str[i]=‘)‘; 22 cin>>a[i]>>b[i]; 23 len++; 24 } 25 } 26 if(s[0]==‘)‘||s[s.size()-1]==‘(‘){ 27 cout<<"-1"<<endl; 28 return 0; 29 } 30 if(abs(l-r)>len){ 31 cout<<"-1"; 32 return 0; 33 } 34 long long ans=0; 35 l=0,r=0; 36 if(s[0]!=‘(‘) str[0]=‘(‘; 37 l++; 38 for(int i=1;i<str.size();i++){ 39 if(s[i]==‘?‘) Q.push(make_pair(b[i]-a[i],i)); 40 if(str[i]==‘(‘) l++; 41 if(str[i]==‘)‘) r++; 42 if(r>l){ 43 pair<int,int> p=Q.top(); 44 Q.pop(); 45 int x=p.second; 46 r--;l++; 47 str[x]=‘(‘; 48 } 49 } 50 if(l!=r){ 51 printf("-1"); 52 return 0; 53 } 54 if(str[0]!=‘(‘||str[str.size()-1]!=‘)‘){ 55 printf("-1"); 56 return 0; 57 } 58 for(int i=0;i<str.size();i++){ 59 if(s[i]==‘?‘){ 60 if(str[i]==‘(‘) ans+=a[i]; 61 if(str[i]==‘)‘) ans+=b[i]; 62 } 63 } 64 cout<<ans<<endl; 65 cout<<str<<endl; 66 return 0; 67 }
这道题需要注意输入输出:
建议用cin和cout
以上是关于CF3D Least Cost Bracket Sequence 题解——贪心的主要内容,如果未能解决你的问题,请参考以下文章
CF3D Least Cost Bracket Sequence 题解——贪心
Least Cost Bracket Sequence(贪心)
Least Cost Bracket Sequence 思维
codeforces 3D - Least Cost Bracket Sequence(贪心)
Codeforces 3DLeast Cost Bracket Sequence
[LeetCode 1368] Minimum Cost to Make at Least One Valid Path in a Grid