CF 3D Least Cost Bracket Sequence

原创 2012年03月29日 22:31:25

怎么也想不出那些大牛一样的思路啊~难道是我自己没有仔细想的缘故!?

贪心~ (其实贪心就是对“状态”而言的,以前都想错了~以为就是简单地对现阶段来贪心,其实只要总的状态得到贪心的话,要记录以前的阶段来比较)

匹配括号,? 一开始设定为 )  然后去判断是否有括号未配对,如果有的话,就贪心一个最小的阶段。当然这个要用一个容器来记录,当然首选优先队列。很好的题~

#include <iostream>
#include <queue>
using namespace std;
struct B
{
    int p,id;
};
priority_queue<B> q;
bool operator < (const B &a,const B &b)
{
    return a.p < b.p;
}
int main()
{
    string s;
    long long a,b,l,len,cost,i;
    B  tmp;
    cin>>s;

        l = 0;
        len = s.size();
        cost = 0 ;
        for(i = 0;i < len;i ++)
        {
            if(s[i] == '(') l ++;
            else if(s[i] == ')') l --;
            else
            {
                cin>>a>>b;
                //B tmp;
                tmp.p = b - a;tmp.id = i;
                q.push(tmp);
                s[i] = ')';
                l --;
                cost += b;
            }
            if(l < 0)
            {
                if(q.empty()) break;
                tmp = q.top();
                q.pop();
                cost -= tmp.p;
                s[tmp.id] = '(';
                l +=2;
            }
        }
        if(l !=0) cout<<-1<<endl;
        else
        {
            cout<<cost<<endl;
            cout<<s<<endl;
        }
        while(!q.empty()) q.pop();

}


相关文章推荐

CodeForces 3D. Least Cost Bracket Sequence

贪心法:先将所有问号设置为值较小的括号。 再检查总的括号数是多了左括号还是多了右括号。 如果多了右括号:设需要更换为左括号的右括号数量为numbers,此时data从左向右循环,如果遇到左括号sum+...

Codeforces 3D Least Cost Bracket Sequence --- 贪心

D. Least Cost Bracket Sequence time limit per test  1 second memory limit per test  64 m...

Codeforces 3D Least Cost Bracket Sequence

EnglishDescThis is yet another problem on regular bracket sequences.A bracket sequence is called reg...

codeforces 3D Least Cost Bracket Sequence

D. Least Cost Bracket Sequence time limit per test 1 second memory limit per test 64 meg...
  • ahoLic
  • ahoLic
  • 2014年04月10日 20:43
  • 2019

Codeforces 3D. Least Cost Bracket Sequence

D. Least Cost Bracket Sequence time limit per test 1 second memory limit per test 64 meg...

D. Least Cost Bracket Sequence

D. Least Cost Bracket Sequence time limit per test1 second memory limit per test64 megabytes inputst...

Codeforces Beta Round #3 D. Least Cost Bracket Sequence 贪心 优先队列

这题和 Codeforces Round #398 (Div.2) E. Change-free 几乎是同一题啊。 题目传送门 题解传送门 题意:给定一个带有若干问号的左右括号序列,其中第i个问号可...

Codeforces Beta Round #3 D. Least Cost Bracket Sequence

看来最不擅长的就是贪心,这种方法都想不起来是不是专题刷多了?   也没见得专题做得有多好啊~ 题目大意: 给出一个字符串,包括三种字符'('、')'、'?',每个问号可以变成其他两...

E - Least Cost Bracket Sequence

E - Least Cost Bracket Sequence Crawling in process... Crawling failed Time Limit:1000MS     Memory...

CF 223A Bracket Sequence

题目链接:http://codeforces.com/problemset/problem/223/A 题目大意: 给定一串只含有' ( ',' ) ', ' [ ' , ' ] '的括号...
  • gotoac
  • gotoac
  • 2012年10月08日 19:50
  • 437
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CF 3D Least Cost Bracket Sequence
举报原因:
原因补充:

(最多只允许输入30个字)