HDU6047 Maximum Sequence(树状数组)
来源:互联网 发布:备案未注册域名 编辑:程序博客网 时间:2024/05/24 02:07
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;/*树状数组求区间最值*/const int maxn=250000+5;const int mod=1e9+7;typedef long long int ll;ll ans;int n,m;int a[maxn*2],b[maxn*2],c[maxn*2],h[maxn*2];int lowbit(int x){ return x & (-x);}void update(int x){ int lx,i; while(x<=2*n) { h[x]=a[x]; lx=lowbit(x); for(i=1;i<lx;i<<=1) h[x]=max(h[x],h[x-i]); x+=lowbit(x); }}int query(int x, int y){ int ans = 0; while (y >= x) { ans = max(a[y], ans); y --; for (; y-lowbit(y) >= x; y -= lowbit(y)) ans = max(h[y], ans); } return ans;}int main(){ while(~scanf("%d",&n)) { ans=0; ll maxv=0; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); memset(h,0,sizeof(h)); for(int i=1;i<=n;i++) { scanf("%d",&c[i]); a[i]=c[i]-i; } for(int i=1;i<=n;i++) { scanf("%d",&b[i]); } sort(b+1,b+1+n); for(int i=1;i<=2*n;i++) { update(i); } for(int i=n+1;i<=2*n;i++) { int ql=b[i-n]; maxv=query(ql,i); ans=(ans+maxv)%mod; a[i]=maxv-i; update(i); } printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- HDU6047 Maximum Sequence(树状数组)
- HDU6047 Maximum Sequence(思路)
- hdu6047 Maximum Sequence(贪心)
- HDU6047 Maximum Sequence【STL】
- HDU6047-Maximum Sequence
- hdu6047--Maximum Sequence
- hdu6047 Maximum Sequence
- HDU6047-Maximum Sequence
- HDU6047 Maximum Sequence
- 2017杭电多校联赛第二场-Maximum Sequence(hdu6047)
- HDU6047---Maximum Sequence(2017多校联赛C题)
- hdu6047-贪心&思维-2017多校(2)-Maximum Sequence
- HDU6047 Maximum Sequence(2017多校第2场)
- 2017多校联合二1003(hdu6047)Maximum Sequence
- HDU6047 Maximum Sequence(贪心,暑期训练1003)
- hdu6047 Maximum Sequence【贪心+线段树】
- 【2017多校】HDU6047 Maximum Sequence 【贪心】
- hdu6047 Maximum Sequence 2017多校二1003
- 阈值化分割(一)双峰法-附Python实现
- Python中的join()函数的用法
- Python入门系列——第16篇
- webpack的使用(5) ---- 热加载自动刷新
- const和引用/指针的结合!
- HDU6047 Maximum Sequence(树状数组)
- VIM
- CodeChef ISCC2017 SEQUA
- 【CSS进阶】原生JS getComputedStyle等方法解析
- 两种方法获取MyBatis刚刚插入的id
- Windchill WTPart WTPartMaster 所有零件操作通用类 PartUtil.java
- libevent中的时间管理
- 稳定排序和不稳定排序
- QT 的main函数参数argc和argv学习总结