【bzoj3300】 USACO2011Best Parenthesis 暴力+树状数组
来源:互联网 发布:js disabled 无效 编辑:程序博客网 时间:2024/05/22 07:57
貌似这道题暴力递归就可以了,可能是我想麻烦了吧,先用栈找出每个括号与之匹配的括号,然后对于括号对按照括号对的长度排序,从小的开始统计后加入树状数组,就没有了。
#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<iostream>#include<algorithm>#define mod 12345678910#define maxn 200010using namespace std;struct yts{int l,r;}q[maxn];int a[maxn],s[maxn];long long c[maxn];int n,top,num;bool cmp(yts x,yts y){return x.r-x.l+1<y.r-y.l+1;}int lowbit(int x){return x&(-x);}void add(int i,long long x){while (i<=n){c[i]=(c[i]+x)%mod;i+=lowbit(i);}}long long query(int i){long long ans=0;while (i){ans=(ans+c[i])%mod;i-=lowbit(i);}return ans;}int main(){scanf("%d",&n);for (int i=1;i<=n;i++) scanf("%d",&a[i]);top=0;num=0;for (int i=1;i<=n;i++) if (a[i]==0) s[++top]=i;else q[++num].l=s[top],q[num].r=i,top--;sort(q+1,q+num+1,cmp);long long ans=0;for (int i=1;i<=num;i++){if (q[i].r-q[i].l==1) {ans=(ans+1)%mod,add(q[i].r,1);continue;}long long x=(query(q[i].r)-query(q[i].l-1)+mod)%mod;ans=(ans+x)%mod;add(q[i].r,x);}printf("%lld\n",ans);return 0;}
0 0
- 【bzoj3300】 USACO2011Best Parenthesis 暴力+树状数组
- bzoj3300
- 1014(暴力树状数组)
- ssoj1046密码pasuwado(树状数组+暴力)
- Query on a string 暴力+树状数组
- HDU 1085(暴力;找规律;树状数组;母函数)
- POJ 2182 Lost Cows(树状数组,暴力解法)
- hdu 4031 Attack(树状数组区间更新单点求值&暴力)
- 求逆序数(暴力,归并,树状数组)
- cf#10-B - Cinema Cashier-暴力+树状数组
- 【bzoj4551】[Tjoi2016&Heoi2016]树 暴力?树剖+树状数组+二分
- Parenthesis
- Parenthesis
- Parenthesis
- HDOJ 4031 - Attack 区间更新点查询的树状数组+暴力...
- UVA 12647 Balloon (线段树) URAL 1915Titan Ruins: Reconstruction of Bygones (暴力,树状数组)
- Hdu 1394-Minimum Inversion Number【暴力求解Or线段树Or树状数组】
- hdu 1394 Minimum Inversion Number 求逆序数(树状数组/归并排序/暴力)
- NBA历史抢断榜
- Cookie简单介绍
- 最大子矩阵和
- 南阳OJ 盗梦空间
- chromium:LoadUrl之后会发生那些事情之DOMTree创建
- 【bzoj3300】 USACO2011Best Parenthesis 暴力+树状数组
- 科大讯飞语音+ 离线听写随记
- ehcache缓存在java 分布式的运用
- OC_类的扩展(类目,延展)
- sql语句中使用正则表达式
- Snail—OC学习之NSNumber
- POJ 2955 — Brackets 区间DP
- 环境变量:用户变量,系统变量区别
- KMP算法解决字符串匹配问题