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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ2339: [HNOI2011]卡农(dp 容斥)

發布時間:2025/7/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ2339: [HNOI2011]卡农(dp 容斥) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意

從$1 - n$中任意選擇一些數,選$m$次構成$m$個集合

保證:

  • 集合不為空
  • 任意兩個集合不相同
  • 集合內各個元素xor起來等于0

Sol

神仙題Orz

我看到兩種做法,一種是洛谷題解上的直接dp,另一種是yyb的神仙轉化。

其實都差不多吧。。

我簡單說一下,設$f[i]$表示選了$i$個集合,滿足條件的方案

直接轉移會非常麻煩,因為要同時限制集合不同 xor不為0,我們又不知道集合的具體元素。

因此我們考慮容斥。

為了方便考慮,我們先不考慮每個元素的位置,最后再除以$M!$

因為xor的性質,若我們已經知道了前$i - 1$個元素,那么我們這時候選什么是確定的。

先確定出前$i - 1$個數,方案數為$A_{2^n - 1}^{i - 1}$,

考慮若此時選了一個空的集合,那我們要保證前$i - 1$個集合滿足條件,方案數為$f[i - 1]$

若選了重復的集合(這是最難理清楚的),剩下的$i - 2$個元素很定要滿足條件,方案數為$f[i - 2]$,然后我們枚舉一個集合,方案數為$2^{n} - (i - 2)$,這樣看似就可以了。但是我們在遞推的時候是沒有考慮順序的,因此另一個元素有$i - 1$種取值,因此還要乘$i - 1$

得到遞推式

f[i]=A_{2^n-1}^{i-1}-f[i-1]-(i-1)\times f[i-2]\times(2^n-1-(i-2))

// luogu-judger-enable-o2 #include<iostream> #include<algorithm> #include<cstdio> #include<stack> #include<vector> #include<cstring> #define LL long long //#define int long long using namespace std; const int MAXN = 3 * 1e6; const LL mod = 1e8 + 7;//fuck inline int read() {char c = getchar(); int x = 0, f = 1;while(c < '0' || c > '9'){if(c == '-') f = -1; c = getchar();}while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x * f; } int N, M; LL ifac[MAXN], fac[MAXN], f[MAXN], A[MAXN]; LL fastpow(LL a, LL p) {LL base = 1;while(p) {if(p & 1) base = (base * a) % mod;a = (a * a) % mod; p >>= 1;}return base % mod; } main() {N = read(); M = read(); LL base = fastpow(2, N) % mod;fac[0] = A[0] = 1; for(int i = 1; i <= M; i++) fac[i] = 1ll * i * fac[i - 1] % mod;ifac[M] = fastpow(fac[M], mod - 2);for(int i = 1; i <= M; i++) A[i] = 1ll * A[i - 1] * (base - i + mod) % mod;f[0] = 1; f[1] = 0; for(int i = 2; i <= M; i++) f[i] = ((A[i - 1] - f[i - 1] + mod) % mod - 1ll * f[i - 2] * (i - 1) % mod * (base - i + 1) % mod + mod) % mod;printf("%lld", f[M] * ifac[M] % mod);return 0; } /* 99999 99999 */

?

轉載于:https://www.cnblogs.com/zwfymqz/p/9540625.html

總結

以上是生活随笔為你收集整理的BZOJ2339: [HNOI2011]卡农(dp 容斥)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄大色黄大片女爽一次 | 成人综合婷婷国产精品久久 | 亚洲国产成人精品女人久久久 | 嫩草影院永久入口 | 久久久久久久久久久久久久国产 | 色播五月综合 | 久久精品国产亚洲7777 | 亚洲一级一区 | 美女扒开腿让男生桶 | 成人黄色大片 | 亚洲中文字幕第一区 | 欧美性生交片4 | 国产精品自拍在线观看 | 咪咪色图 | 激情综合网五月婷婷 | 91久久久久久久久久久 | 欧美性在线观看 | 抱着老师的嫩臀猛然挺进视频 | 亚洲国产精品成人无码区 | 激情图片在线视频 | 国产美女av在线 | 欧美性做爰猛烈叫床潮 | 一个人看的www日本高清视频 | 麻豆免费av | 成人免费毛片观看 | 极品淫少妇 | 久久综合久久鬼色 | 日本精品在线 | 亚洲黄色中文字幕 | 少妇精品久久久久www | 国产午夜大片 | 成人免费网视频 | 久久怡春院 | 少妇人妻一区二区 | 色噜噜网站 | 国产一区二区毛片 | 日本性爱动漫 | 麻豆精品在线观看 | 日本一区二区三区免费在线观看 | 色噜噜日韩精品欧美一区二区 | 在线免费视频你懂的 | 91草草草| 99精品久久久久久中文字幕 | 口爆吞精一区二区三区 | 欧美瑟瑟 | 成年人免费高清视频 | 欧美色图12p | 在线香蕉视频 | 久久三区| ass亚洲熟妇毛耸耸pics | 欧美激情免费观看 | 中日韩av电影| 国产精品36p | 美女av影院 | 天天舔天天干 | 精品伦精品一区二区三区视频 | 日韩成人免费在线视频 | 欧美又粗又长又爽做受 | 黄色中文字幕在线观看 | 日韩成人片 | 精品国产96亚洲一区二区三区 | 伊人春色视频 | 免费国产小视频 | 欧美日韩一区二区在线观看视频 | 先锋影音av资源网站 | 爱爱免费视频网站 | 欧美日韩一区二区三区四区 | 日本成片网 | 国产精品视频全国免费观看 | 美女视频久久 | 国产成人片 | 99精品一区二区三区无码吞精 | 无码人妻精品一区二区三区蜜桃91 | 亚洲精品久久久久久无码色欲四季 | 国产色秀视频 | 大肉大捧一进一出好爽动态图 | 亚洲免费国产视频 | 另类激情视频 | 天天草夜夜操 | 福利亚洲| 熟妇人妻中文av无码 | 992tv在线影院 | 午夜三级在线观看 | mm131国产精品 | 少妇特殊按摩高潮惨叫无码 | 级毛片内射视频 | 亚洲日批 | 欧美亚洲天堂网 | 法国空姐电影在线 | 国产视频播放 | 一级特黄aaa| 九九视频国产 | 快色在线观看 | 中文字字幕在线中文乱码 | 日韩精品视频在线播放 | 国产在线综合视频 | 91免费在线视频观看 | 天天操夜夜爱 | 高清av一区 |