【codeforces】3D
来源:互联网 发布:基于java ee管理系统 编辑:程序博客网 时间:2024/05/10 00:03
贪心+调整,先假设变为‘)’再用一个堆来调整,类似勇者斗恶龙
#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;int i,n,m,t,mid;long long ans;int l[200000],r[200000],a[200000][2],b[200000],c[200000],w[200000],e;char ch[200000];int merge(int x,int y){ if (!x) return y; if (!y) return x; if (w[x]>w[y]) e=x,x=y,y=e; r[x]=merge(r[x],y); e=l[x],l[x]=r[x],r[x]=e; return x;}int main(){ freopen("i.txt","r",stdin); freopen("o.txt","w",stdout); scanf("%s\n",ch+1); n=strlen(ch+1),m=0; for (i=1;i<=n;i++) if ('?'==ch[i]) c[++m]=i; for (i=1;i<=m;i++) scanf("%d%d\n",&a[c[i]][0],&a[c[i]][1]); mid=t=0; for (i=1;i<=n;i++) { if (ch[i]=='(') ++t,b[i]=0; else if (ch[i]=='?') { if (t) {w[i]=a[i][0]-a[i][1];b[i]=1,t--;mid=merge(mid,i); } else {if (mid && w[mid]+a[i][1]<a[i][0]) { b[mid]=0; mid=merge(l[mid],r[mid]); b[i]=1,t=1; w[i]=a[i][0]-a[i][1]; mid=merge(mid,i);}else b[i]=0,t=1; } } else { b[i]=1; if (t) t--; else {if (!mid) break;b[mid]=0;mid=merge(l[mid],r[mid]);t=1; } } } if (i<=n || t) { printf("-1\n"); return 0; } ans=0; for (i=1;i<=n;i++) ans+=a[i][b[i]]; printf("%I64d\n",ans); for (i=1;i<=n;i++) if (!b[i]) printf("(");else printf(")"); return 0;}
- 【codeforces】3D
- Codeforces 3D 优先队列
- codeforces 93 div2 D题 - kmp- 3
- 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 617D CodeForces 617D
- CodeForces 101D
- CodeForces 103D
- CodeForces 222D Olympiad
- codeforces 242d
- CodeForces 111D
- CodeForces 127D Password
- codeforces 257D. Sum
- oracle11g 启动停止服务,修改字符集,导入导出,创建删除表空间,卸载oracle等
- codejock中对listctrl控件tipwindow的使用
- 《审题精练》参考答案
- ubuntu gem 安装mysql报错
- vb6.0 MSDN的安装位置
- 【codeforces】3D
- Linux 系统函数记录 dup
- 从实践中体会dispatcher模式
- 类变量类方法
- Hint 使用心得
- 警告 incomplete implementation
- 安装VMWare过程中蓝屏了(解决方案)
- oerr 命令的使用
- 创建“通用的”动态链接库(DLL)