日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

期望+DP ZOJ 3929 Deque and Balls

發布時間:2023/12/20 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 期望+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; }

  

轉載于:https://www.cnblogs.com/Running-Time/p/5387417.html

總結

以上是生活随笔為你收集整理的期望+DP ZOJ 3929 Deque and Balls的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。