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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[UOJ]#36. 【清华集训2014】玛里苟斯 线性基+分类讨论

發布時間:2023/12/14 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [UOJ]#36. 【清华集训2014】玛里苟斯 线性基+分类讨论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意:

魔法之龍瑪里茍斯最近在為加基森拍賣師的削弱而感到傷心,于是他想了一道數學題。
SSS 是一個可重集合,S=a1,a2,…,anS={a1,a2,…,an}S=a1,a2,,an
等概率隨機取 S 的一個子集 A=ai1,…,aimA={ai1,…,aim}A=ai1,,aim
計算出 AAA 中所有元素異或 xxx, 求 xkx^kxk 的期望。

題解:

tyb
code:

#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #define LL unsigned long long using namespace std; bool c[65]; LL n,k,a[100010],cnt=0; LL b[65],t,a1=0,a2=0; void dfs(LL x,LL v) {if(x>22){if(k==3) a2+=v*v*v;if(k==4){a1+=(v*v/t)*v*v;a1+=(v*v%t*v*v/t);a2+=v*v%t*v%t*v%t;}if(k==5){a1+=(v*v*v/t)*v*v;a1+=(v*v*v%t*v*v/t);a2+=v*v%t*v%t*v%t*v%t;}a1+=a2/t;a2%=t;return;}dfs(x+1,v);if(b[x]) dfs(x+1,v^b[x]); } LL ans=0; int main() {scanf("%llu %llu",&n,&k);memset(c,false,sizeof(c));for(LL i=1;i<=n;i++) scanf("%llu",&a[i]);for(LL i=1;i<=n;i++)for(LL j=0;j<=63;j++) if(((LL)1<<j)&a[i]) c[j]=true;if(k==1){for(LL i=0;i<=63;i++) if(c[i]) ans+=(LL)1<<i;printf("%llu",ans/2);if(ans&1) printf(".5");}else if(k==2){for(LL i=0;i<=63;i++)if(c[i]){for(LL j=i+1;j<=63;j++)if(c[j]){bool flag=true;for(LL l=1;l<=n;l++)if(((a[l]>>i)&1)!=((a[l]>>j)&1)) {flag=false;break;}if(flag) ans+=(1LL<<(i+j+1));else ans+=(1LL<<(i+j));}}for(LL i=0;i<=63;i++) if(c[i]) ans+=(1LL<<(i*2));printf("%llu",ans/2);if(ans&1) printf(".5");}else{for(LL i=1;i<=n;i++){LL x=a[i];for(LL j=63;j>=0;j--){if((1LL<<j)&x){if(!b[j]) {b[j]=x;cnt++;break;}x^=b[j];}if(j==0) break;}}t=1LL<<cnt;dfs(0,0);printf("%llu",a1);if(a2) printf(".5");} }

總結

以上是生活随笔為你收集整理的[UOJ]#36. 【清华集训2014】玛里苟斯 线性基+分类讨论的全部內容,希望文章能夠幫你解決所遇到的問題。

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