期望+DP ZOJ 3929 Deque and Balls
题意:给你n个数,按照顺序依次放入一个双端队列(可放在头部,也可以放在尾部),求xi > xi+1的期望 * 2^n mod (1e9 +7)
分析:期望*2^n=出现这种排法的概率*这种排法的desents数*2^n = 1/(2^(n-1)) * 2^n * 每一种排法每一个数的desents数=2*
每一种排法每一个数字的贡献值.
首先插入xi有两种方法,相当于有两种排法,那么求前缀时ans[i] = ans[i-1] * 2,然后再考虑当前xi的贡献值:如果放在头部,那么要求出满足xi>xj的xj的出现次数和,然后发现第一个数字出现1次,第二个2次,第三个4次,8,16...放在尾部同理,用树状数组累计次数和,至于i之后的数字如何排都不会对当前i做贡献,所以*.
#include <bits/stdc++.h> const int N = 1e5 + 5;
const int MOD = 1e9 + 7; template<class T>
void add(T &a, T b) {
a += b;
if (a >= MOD) {
a -= MOD;
}
} struct BIT {
int c[N];
int n;
void init(int n) {
this->n = n;
std::fill (c, c+1+n, 0);
}
void updata(int p, int v) {
for (int i=p; i<=n; i+=i&-i) {
add (c[i], v);
}
}
int query(int p) {
int ret = 0;
for (int i=p; i>0; i-=i&-i) {
add (ret, c[i]);
}
return ret;
}
};
BIT L, R; int a[N], cnt[N]; int pow_mod(int x, int n) {
int ret = 1;
while (n) {
if (n & 1) {
ret = 1ll * ret * x % MOD;
}
x = 1ll * x * x % MOD; n >>= 1;
}
return ret;
} void pre_init() {
cnt[1] = cnt[2] = 1;
for (int i=3; i<=100000; ++i) {
cnt[i] = 1ll * cnt[i-1] * 2 % MOD;
}
} int main() {
pre_init ();
int T; scanf ("%d", &T);
while (T--) {
int n; scanf ("%d", &n);
int nn = n + 3;
L.init (nn); R.init (nn);
for (int i=1; i<=n; ++i) {
scanf ("%d", a+i);
}
long long ans = 0;
for (int i=1; i<=n; ++i) {
long long tmp = 0LL + L.query (a[i] - 1) + R.query (nn-a[i]-1);
tmp = tmp * pow_mod (2, n - i) % MOD;
add (ans, tmp);
L.updata (a[i], cnt[i]);
R.updata (nn - a[i], cnt[i]);
}
ans = ans * 2 % MOD;
std::cout << ans << '\n';
} return 0;
}
期望+DP ZOJ 3929 Deque and Balls的更多相关文章
- ZOJ 3929 Deque and Balls
答案=所有情况中总共递减次数*2 放完i个和放完i-1个之间的递减次数是可以递推的. 有一部分是放完i-1个之后产生的,还有一部分是放完第i个之后新产生的. 注意减去多加的部分. 2的i次方可以打个表 ...
- ZOJ 3932 Deque and Balls
There are n balls, where the i-th ball is labeled as pi. You are going to put n balls into a deque. ...
- ZOJ 3822 Domination 期望dp
Domination Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showProblem ...
- poj 2096 , zoj 3329 , hdu 4035 —— 期望DP
题目:http://poj.org/problem?id=2096 题目好长...意思就是每次出现 x 和 y,问期望几次 x 集齐 n 种,y 集齐 s 种: 所以设 f[i][j] 表示已经有几种 ...
- Gym - 101190F Foreign Postcards (期望dp)
题意:有n张标有“C”或“F”的卡片. 1.随机取前k张(1<=k<=n) 2.若这k张的第一张为“C”,则不翻转,否则,全部翻转这k张. 3.然后处理剩下的n-k张 4.重复步骤1~3直 ...
- 【BZOJ-1419】Red is good 概率期望DP
1419: Red is good Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 660 Solved: 257[Submit][Status][Di ...
- [NOIP2016]换教室 D1 T3 Floyed+期望DP
[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...
- HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)
题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...
- 【BZOJ-4008】亚瑟王 概率与期望 + DP
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 5 ...
随机推荐
- SSH框架中json传递失败
错误截图: 这个错误乍一看无从下手,报的都是框架底层的错误,于是查阅资料得到了答案. 错误原因:struts会将action中定义的一些变量序列化转换成json格式,需要调用对象的一系列get方法,并 ...
- Swift - 初始化Initialization
Ps:苹果官方文档-Initialization 自定义控件初始化中常见的几种错误(指定构造器和便利构造器)截图: 意思是:1.没有添加重写符override(重写父类方法)2.没有重写initW ...
- Swift - 文件目录路径获取及数据储存(Home目录,文档目录,缓存目录)
iOS应用程序只能在自己的目录下进行文件的操作,不可以访问其他的存储空间,此区域被称为沙盒. 应用沙盒结构分析 1.应用程序包:包含了所有的资源文件和可执行文件 2.Documents:保存应用运 ...
- python基础语法(二)
本文主要包括以下内容 函数 切片 迭代 列表生成式 生成器 迭代器 函数 定义函数 定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块 ...
- Paragon NTFS for Mac® Yosemite - 免费下载
文章链接:http://www.paragon-software.com/cn/home/ntfs-mac-yosemite/registration.html
- python字符串中插入变量
- Jquery.Datatables 服务器处理(Server-side processing)
看了看介绍 http://datatables.club/manual/server-side.html 没有经过处理的分页,先显示出来看看效果,就这样写(存储过程自己写) cshtml " ...
- 一般处理程序获取session值
1.要在一般处理程序中获取其他页面的session值,需要引用名空间: using System.Web.SessionState; 2.然后继承一个接口:IRequiresSessionState, ...
- jQuery积累
一:Google的CDN(内容分发网络) <head> <script type="text/javascript" src="http://ajax. ...
- poj 3278:Catch That Cow(简单一维广搜)
Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 45648 Accepted: 14310 ...