期望+DP ZOJ 3929 Deque and Balls

时间:2022-10-01 10:50:42

题目链接

题意:给你n个数,按照顺序依次放入一个双端队列(可放在头部,也可以放在尾部),求xi > xi+1的期望 * 2^n mod (1e9 +7)

分析:期望*2^n=出现这种排法的概率*这种排法的desents数*2^n = 1/(2^(n-1)) * 2^n * 期望+DP ZOJ 3929 Deque and Balls每一种排法每一个数的desents数=2* 期望+DP ZOJ 3929 Deque and Balls期望+DP ZOJ 3929 Deque and Balls每一种排法每一个数字的贡献值.

首先插入xi有两种方法,相当于有两种排法,那么求前缀时ans[i] = ans[i-1] * 2,然后再考虑当前xi的贡献值:如果放在头部,那么要求出满足xi>xj的xj的出现次数和,然后发现第一个数字出现1次,第二个2次,第三个4次,8,16...放在尾部同理,用树状数组累计次数和,至于i之后的数字如何排都不会对当前i做贡献,所以*期望+DP ZOJ 3929 Deque and Balls.

#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的更多相关文章

  1. ZOJ 3929 Deque and Balls

    答案=所有情况中总共递减次数*2 放完i个和放完i-1个之间的递减次数是可以递推的. 有一部分是放完i-1个之后产生的,还有一部分是放完第i个之后新产生的. 注意减去多加的部分. 2的i次方可以打个表 ...

  2. 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. ...

  3. ZOJ 3822 Domination 期望dp

    Domination Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showProblem ...

  4. poj 2096 &comma; zoj 3329 &comma; hdu 4035 —— 期望DP

    题目:http://poj.org/problem?id=2096 题目好长...意思就是每次出现 x 和 y,问期望几次 x 集齐 n 种,y 集齐 s 种: 所以设 f[i][j] 表示已经有几种 ...

  5. Gym - 101190F Foreign Postcards (期望dp)

    题意:有n张标有“C”或“F”的卡片. 1.随机取前k张(1<=k<=n) 2.若这k张的第一张为“C”,则不翻转,否则,全部翻转这k张. 3.然后处理剩下的n-k张 4.重复步骤1~3直 ...

  6. 【BZOJ-1419】Red is good 概率期望DP

    1419: Red is good Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 660  Solved: 257[Submit][Status][Di ...

  7. &lbrack;NOIP2016&rsqb;换教室 D1 T3 Floyed&plus;期望DP

    [NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...

  8. HDU 4336 Card Collector &lpar;期望DP&plus;状态压缩 或者 状态压缩&plus;容斥&rpar;

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

  9. 【BZOJ-4008】亚瑟王 概率与期望 &plus; DP

    4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special JudgeSubmit: 832  Solved: 5 ...

随机推荐

  1. iOS 摇一摇的功能

    效果如下 相关素材 相关代码如下 #import "ShakeViewController.h" #import <AudioToolbox/AudioToolbox.h&g ...

  2. js中返回上一页失效的解决办法

    最近在做移动端的时候,碰到了一个问题,就是点击返回按键,使用history.go(-1)或history.back(-1)不能够生效.于是便寻找其他的方法,终于找到了一位大神的方法如下: if(win ...

  3. HTML流动布局各种宽度自适应

    <!DOCTYPE html> <html lang="en"> <style> html,body{ padding: 0;margin: 0 ...

  4. throttle在程序中的作用

    throttle http://www.iciba.com/throttle N-COUNT (汽车.飞机的)节流阀,油门杆,油门踏板 The throttle of a motor vehicle ...

  5. MVC区域使用

    新建项目 Main: 添加一个MVC5控制器并添加index视图:(HomeController) Views/Home/Index.cshtml内容: @{ Layout = null; } &lt ...

  6. PAT 10-1 在字符串中查找指定字符

    百度了一下另外两位同学的做法,都是先判断是否匹配,然后再用一个for()循环输出,我当然也是先判断,然后,就直接puts(),还是巧妙一点,题设要求及代码实现如下 /* Name: Copyright ...

  7. &lbrack;Java&rsqb; Web开发HTTP状态码整理

    HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518.RFC 2817.RFC 2295.R ...

  8. 关于StringBuilder

    写在前面的话 很久没有更新博客了,来上海实习身边的一切波动挺大的,还好我走过来了,博客园:一路有你! StringBuilder 相信大家对StringBuilder类型一定不陌生,我们Coding经 ...

  9. java Timer 使用小结

    Java自带的java.util.Timer类,通过调度一个java.util.TimerTask任务.这种方式可以让程序按照某一个频度执行,但不能指定时间运行.用的较少. 任务的调用通过起的子线程进 ...

  10. C&num; 获取web&period;config配置文件

    .ConfigurationManager提供对客户端应用程序配置文件的访问. 其有两个属性1.ConnectionStrings 获取当前应用程序默认配置的 ConnectionStringsSec ...