[DP 分块] UOJ #300. 【CTSC2017】吉夫特
来源:互联网 发布:网络教育网上报名 编辑:程序博客网 时间:2024/05/17 01:20
DP的转移是一个子集和的形式
直接做是
按照高9位 低9位分块可以做到
#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;#define read(x) scanf("%d",&(x))const int N=1<<18;const int P=1000000007;int n,a[N];int f[N];inline void add(int &x,int y){ x+=y; if (x>=P) x-=P;}inline void Add(int x,int y){ int a=x>>9,b=x&511; for (int i=a;i;i=(--i)&a) add(f[(i<<9)|b],y); add(f[b],y);}inline int Query(int x){ int a=x>>9,b=(~x)&511; int ret=0; for (int i=b;i;i=(--i)&b) add(ret,f[(a<<9)|((~i)&511)]); add(ret,f[(a<<9)|511]); return ret;}int main(){ freopen("t.in","r",stdin); freopen("t.out","w",stdout); read(n); for (int i=1;i<=n;i++) read(a[i]); int ans=0; for (int i=1;i<=n;i++){ int t=Query(a[i])+1; add(ans,t); Add(a[i],t); } printf("%d\n",(ans+P-n)%P); return 0;}
阅读全文
0 0
- [DP 分块] UOJ #300. 【CTSC2017】吉夫特
- [UOJ 300][CTSC2017]吉夫特-扩展Lucas定理
- 洛谷 P3773 [CTSC2017]吉夫特(bzoj P4903 [CTSC2017]吉夫特/uoj P300【CTSC2017】吉夫特)
- #300. 【CTSC2017】吉夫特
- uoj#299. 【CTSC2017】游戏 & bzoj4902
- uoj#246. 【UER #7】套路(dp+分块?分类讨论?)
- BZOJ4903 [Ctsc2017]吉夫特
- [UOJ#206][Apio2016]Gap(分块+数学相关)
- [UOJ 28][IOI 2014]Friend(DP)
- 【uoj#149】【NOIP2015】子串 DP
- 【UOJ#149】【NOIP2015】子串【计数DP】
- [UOJ#149][NOIP2015]子串(dp)
- [期望DP] UOJ#311. 【UNR #2】积劳成疾
- [DP] UOJ #311. 【UNR #2】积劳成疾
- UOJ 265(状压dp)(NOIP2016)
- 【DP】UOJ#149 【NOIP2015】子串
- 【DP】UOJ#17 【NOIP2014】飞扬的小鸟
- CTSC2017游记
- 北风网培训质量如何?包就业靠谱吗?
- jsp界面上格式化日期
- 变量的执行环境和作用域2
- Java泛型入门
- win7 microsoft office 2013plus 激活 秒激活神器
- [DP 分块] UOJ #300. 【CTSC2017】吉夫特
- 【二叉树】二叉树的高度以及创建 销毁二叉树
- 【计算机视觉】一文看懂:“计算机视觉”到底是个啥?
- 《数据结构学习与实验指导》5-7:新浪微博热门话题
- rxjava2.0使用教程(二)
- 抓到一把锟斤拷
- MATLAB作图一
- 【转】Unity3D 浅谈 Camera(摄像机)
- 通知