CodeForces 3D Least Cost Bracket Sequence
来源:互联网 发布:光辉岁月 知乎 编辑:程序博客网 时间:2024/05/17 04:55
经典的贪心题目,解决问题的方法很值得深思,值得收藏~~
#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>#include <iostream>#include <algorithm>using namespace std;const int MAXN = 55555;char str[MAXN];struct Node{ int val, id; Node() {} Node(int t_val, int t_id) : val(t_val), id(t_id) {} friend bool operator < (const Node &p1, const Node &p2) { return p1.val < p2.val; }};priority_queue<Node> que;int main(){ //freopen("aa.in", "r", stdin); //freopen("bb.out", "w", stdout); int a, b; Node t; long long ans = 0; int cnt = 0; scanf("%s", str); int len = strlen(str); for(int i = 0; i < len; ++i) { if(str[i] == '(') { cnt++; } else if(str[i] == ')') { cnt--; } else if(str[i] == '?') { cin >> a >> b; cnt--; str[i] = ')'; ans += b; que.push(Node(b - a, i)); } if(cnt < 0) //对当前右括号的数目大于左括号数目的情况,利用优先队列中的右括号进行消去 { if(que.empty()) //非法的情况 break; t = que.top(); que.pop(); ans -= t.val; cnt += 2; str[t.id] = '('; } } if(cnt != 0) cout << "-1" << endl; else { cout << ans << endl; for(int i = 0; i < len; ++i) { cout << str[i]; } } cout << endl; return 0;}
- CodeForces 3D Least Cost Bracket Sequence
- codeforces 3D Least Cost Bracket Sequence
- Codeforces 3D. Least Cost Bracket Sequence
- CodeForces 3D. Least Cost Bracket Sequence
- CodeForces 3D-Least Cost Bracket Sequence
- CodeForces 3D Least Cost Bracket Sequence
- Codeforces 3D Least Cost Bracket Sequence
- Codeforces 3D Least Cost Bracket Sequence 贪心
- Codeforces 3D Least Cost Bracket Sequence (贪心)
- Codeforces 3D Least Cost Bracket Sequence --- 贪心
- Codeforces Beta Round #3 D. Least Cost Bracket Sequence
- Codeforces 3D Least Cost Bracket Sequence [贪心]
- Codeforces 3D Least Cost Bracket Sequence(贪心)
- Codeforces Beta Round #3 D. Least Cost Bracket Sequence
- CF 3D Least Cost Bracket Sequence
- CF 3D Least Cost Bracket Sequence
- D. Least Cost Bracket Sequence
- CodeForces 3D Least Cost Bracket Sequence (贪心+优先队列)
- 数组转换
- Debug of bash , perl and python
- Jquery选择父窗体的内容
- apache FtpServer 整合spring部署
- git egit 如何 revert
- CodeForces 3D Least Cost Bracket Sequence
- 电池容量的使用时间计算
- sql server 中sql语句执行顺序
- maven打包可运行的JAR
- Vector用法
- libgdx gdx-tiled-preprocessor如何运行
- 怎样使用LaTeX输入葡萄牙语等语言中的特殊字符
- Android框架浅析之锁屏(Keyguard)机制原理(转载)
- WIN7 64 bit 发布webservice 引用 dll 试图加载格式不正确的程序