博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces - 524F And Yet Another Bracket Sequence
阅读量:4543 次
发布时间:2019-06-08

本文共 1505 字,大约阅读时间需要 5 分钟。

 

    (会考完之后休闲休闲2333)

    可以发现,如果把一个串中"()"自动删除,最后剩的一定是形如"))))....))(((..((("这样的串,然后我们多加进去的括号的个数就是剩的这个串的长度。。

    然鹅这个题首先要求的是最后总长度最小,并且我们可以观察发现把最后一个循环位移到最前面是会使一对")("相抵消的。

    所以我们最后的最优答案一定是排除已经匹配的括号之后只剩一种括号的串,我们枚举一下循环位移了多少(循环位移之后一定是一个原串的后缀+前缀的形式),然后再判断一下这种循环位移是否会只剩一种串(可以把原串中 '('个数 - ')'个数 分类讨论一下,然后退出一个形如 一个区间里的前缀/后缀 都要 大于等于 某个前缀/后缀 的式子,可以 O(N) 单调队列扫一遍 ),然后用hash直接更新答案即可,显然最后多的括号都堆在前面或者后面是最优的,然后就做完了2333

 

(最近常数是真的小啊2333)

 

#include
#define ll long longusing namespace std;const int maxn=2000005,ha=1e9+9;inline int Get(char x){ return x=='('?1:-1;}inline int add(int x,int y){ x+=y; return x>=ha?x-ha:x;}int n,q[maxn],hd,tl,a[maxn],tot,p,N;int c[maxn],h[maxn];char s[maxn]; inline int gethash(int x,int len){ return add(h[x+len-1],ha-h[x-1]*(ll)c[len]%ha);}inline bool cmp(int x,int y){ int l=0,r=n,mid,an=0; while(l<=r){ mid=l+r>>1; if(gethash(x,mid)==gethash(y,mid)) an=mid,l=mid+1; else r=mid-1; } return an==n?1:s[x+an]=='(';}inline void update(int x){ if(!p||cmp(x,p)) p=x;}inline void solve1(){ c[0]=1; for(int i=1;i<=N;i++){ a[i]=a[i-1]+Get(s[i]); c[i]=add(c[i-1],add(c[i-1],c[i-1])); h[i]=add(add(h[i-1],add(h[i-1],h[i-1])),(s[i]=='('?1:2)); } hd=1,tl=0; for(int i=1;i
=n&&a[q[hd]]>=a[i-n]) update(i-n+1); } for(int i=0;i
=i) hd++; if(i<=n&&a[q[hd]]>=a[i+n]) update(i); } for(int i=tot;i<0;i++) putchar('('); for(int i=0;i
=0) solve1(); else solve2(); return 0;}

  

转载于:https://www.cnblogs.com/JYYHH/p/9230730.html

你可能感兴趣的文章
windows 2012 抓明文密码方法
查看>>
跟我学android-常用控件之EditText
查看>>
项目源码--JSP在线客服系统(SSH框架技术)源码
查看>>
【动态规划 floyd】SPOJ ACPC13
查看>>
如何收藏互联网上的任意网页到系统某个分类下,之后进行批量导出发布等---博客备份专家的博文收藏功能您不可不知...
查看>>
【LeetCode】129. Sum Root to Leaf Numbers (2 solutions)
查看>>
JavaScript页面存放位置
查看>>
阿里云ECS(Centos)开启X11的步骤
查看>>
Vue_WebPack小白入门
查看>>
Git 常用操作(二)
查看>>
Jquey(绑定事件)
查看>>
php的变量引用详解
查看>>
Linux---centos编译安装ffmpeg
查看>>
个人待办事项工具的设计和搭建(IFE前端2015春季 任务3)
查看>>
nginx
查看>>
openssl生成ssl证书
查看>>
matplotlib 柱状图 Bar Chart 样例及参数
查看>>
The 10th SWJTU Collegiate Programming Contest - Online Round
查看>>
我一路奔来,奔向未来
查看>>
Leangoo敏捷项目协作工具到底好在哪里?
查看>>