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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

bzoj 3811: 玛里苟斯

發布時間:2023/12/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj 3811: 玛里苟斯 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3811: 瑪里茍斯

Time Limit:?10 Sec??Memory Limit:?256 MB
Submit:?190??Solved:?95
[Submit][Status][Discuss]

Description

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

?

Input

第一行兩個正整數 n, k。 以下 n 行每行一個整數,表示 ai。

?

Output

如果結果是整數,直接輸出。如果結果是小數(顯然這個小數是有限的),輸出精確值(末尾不加多余的 0)。

?

Sample Input

4 2
0
1
2
3

Sample Output

3.5

首先,對于題目的答案小于263,我們可以看出對于不同的k,ai是不同的:

k=1,ai<263
k=2,ai<232
k=3,ai<221
k=4,ai<216
k=5,ai<213

首先,因此我們依據數據范圍,對于不同的ai有不同的解法。

其次,題目要求輸出精確的小數,由以下推導我們可以知道,小數最多只有.5,不可能存在.25,.125這樣的:

對于求出來了其中一種情況x,他對答案的貢獻是xk*p,其中p是該情況出現的概率。
我們以x=2為例,其他k的情況類似:
我們把這個x按二進制分成了最多n位,也就是最大的數的最高位為n。那么他的k次方是(w0*20+w1*21+w2*22……+wn*2n)*(w0*20+w1*21+w2*22……+wn*2n),展開就是w0*w0*20*20+w0*w1*20*21……wn*wn*2n*2n。其中wi是它每個二進制位的值。
對于每個項wi*wj*2i+j,他存在的情況是wi為1且wj為1,也就是該位異或和為1。那么他的存在的概率為P/2N(N為輸入的數列數字數),P為該兩位皆為1的情況數。
證明題外話:對于數列,我們可以先做個線性基,把線性相關的數字去掉,剩下的都是線性無關的數,這樣方便處理。
我們可以構造一個異或(%2)的增廣矩陣來求解這樣的一個P的數量,x1~xn,即xi代表這個數字是否在集合中,作為一個行向量X,把所有數字按按二進制位分解,每個數字占一列,構造一個矩陣MART.
那么我們求解的是X*MART=ANS,ANS為一個行向量,只有你要求的對應位為1,其余為0。
假如我們求解的是i位和j位,我們的矩陣對應方程差不多是這樣的:
(2333 此處^為異或)
x1*w(1,0)^x2*w(2,0)^x3*w(3,0) ……^xN*w(N,0) =0;
x1*w(1,1)^x2*w(2,1)^x3*w(3,1) ……^xN*w(N,1) =0;
……
x1*w(1,i)^x2*w(2,i)^x3*w(3,i) ……^xN*w(N,i) =1;
……
x1*w(1,j)^x2*w(2,j)^x3*w(3,j) ……^xN*w(N,j) =1;
……
x1*w(1,n)^x2*w(2,n)^x3*w(3,n) ……^xN*w(N,n) =0;
下面還有N-n個方程,對應更高位。畢竟是個矩陣嘛行數等于列數,但它們的w全為0,等號右邊也為0,對求解無影響就不列舉了。

其中w(i,j),j代表數列第i個數字的第j位。
我們經過高斯消元以后弄成上三角,可以得出有t個f[i][i]非零的行,那么只有這t個xi是有唯一解的,其他的xi有多解。因為%2,所以其他xi有2解,那么總共就有2N-t個解,即P=2N-t;
那么wi*wj存在的概率為p/2N=1/(2t);
那么每項對答案的貢獻為2i+j-t
對于i≠j,i+j≥1,t≤2,因此最多小數點后1位.5。
對于i==j,上述方程只有一行初始為1,所以t≤1,i+j≥0,也是最多.5。
上述結論擴展成k=n的情況,無非是方程等于1的行增加為n。
如果我們求解的位(wi*wj*wt.....)中有k位不同,那么方程等于1的行就縮小為k行,因此i+j+t....≥0+1+……k-1=k*(k-1)/2>=k-1=t-1,k≥2。
∴Σp-t>=-1,p為所求解對應位的位號。對應k=2的貢獻2i+j-t,K=n貢獻為2Σp-t>=2-1。所以最多有一位小數.5。
k=1顯而易見最多/2所以k=1也是最多也是.5。
至此證明完畢。

接下來我們對應數據范圍,提出三種不同范圍下的解法:

k=1時,就求x的期望,它是線性的。對于所有數的所有子集的異或和,我們從他們某個二進制位看。如果有數字該位為1,那么該位有奇數個1和偶數個1的概率是相等的,皆為1/2。為奇數個為該位為1的情況,為1/2。如果沒有則不可能為1,該位始終為0。
那么我們只要把每個數字或一下,然后乘1/2就是答案了。

k=2時,就要按位做了。先做個線性基剔除線性無關的向量。然后把在線性基每位唯一化(即消消元弄成每位上只有一個數字有1),這樣做方便處理獨立性。按照上面證明的展開,那么對于兩位i,j,由k=1可得,如果這兩位獨立的話(即不在同一個數字中相應位為1),那么等概率出現(0,0),(0,1),(1,0),(1,1),(1,1)即wi,wj存在的概率為1/4,不獨立的話只可能等概率出現(0,0)和(1,1),(1,1)概率為1/2。
那么枚舉32位*32位,算算他們均為1的概率P*2i+j,作為答案貢獻加入答案中。

k≥3時,由于ai<221 ,即使枚舉0~ai也最多百萬級別的時間復雜度。我們可以類似線性基求第k小枚舉出所有可能出現的數字。于是我們可以考慮做完線性基后,唯一化,構造新數組存不為0的元素中。
然后枚舉每個數是否加入異或貢獻中,這樣可以求出所有數異或的所有值了。借用之前題目的結論,每個不同的異或值有P=2n-|μ|選擇元素的方法,n為原本數組個數,|μ|為新構造的數組個數。那么每個值出現的概率就是P/總選擇方法數=P/(2n)=1/(2|μ|)的概率,值 乘 概率即為對答案的貢獻。
這里需要做個兩位的高精來保證數字不出現錯誤。

1 #include<bits/stdc++.h> 2 #define clr(x) memset(x,0,sizeof(x)) 3 #define clr_1(x) memset(x,-1,sizeof(x)) 4 #define LL unsigned long long 5 #define mod 1000000007 6 using namespace std; 7 const int N=2e5+10; 8 LL a[N],liner[100],per[100]; 9 bool f[40][40]; 10 bool bits[40]; 11 int n,m,k,cnt; 12 LL ans,res,keepbit; 13 void calc(int bit) 14 { 15 clr(liner); 16 LL p; 17 for(int i=1;i<=n;i++) 18 { 19 for(int j=bit;j>=0;j--) 20 { 21 p=a[i]; 22 if(p>>j) 23 { 24 if(liner[j]) p^=liner[j]; 25 else 26 { 27 liner[j]=p; 28 break; 29 } 30 } 31 } 32 } 33 for(int i=bit;i>=0;i--) 34 { 35 for(int j=i-1;j>=0;j--) 36 if((liner[i]>>j)&1) liner[j]^=liner[i]; 37 } 38 cnt=0; 39 for(int i=bit;i>=0;i--) 40 if(liner[i]) 41 per[++cnt]=liner[i]; 42 return ; 43 } 44 void solve1(int n) 45 { 46 ans=0,res=0; 47 for(int i=1;i<=n;i++) 48 ans|=a[i]; 49 if(ans&1) 50 res=1; 51 ans>>=1; 52 return ; 53 } 54 void solve2(int n) 55 { 56 clr(bits); 57 ans=res=0; 58 bool zero; 59 for(int i=32;i>=0;i--) 60 { 61 zero=0; 62 for(int j=1;j<=cnt;j++) 63 { 64 f[i][j]=(per[j]>>i)&1; 65 zero|=f[i][j]; 66 } 67 bits[i]=zero; 68 } 69 int p; 70 for(int i=32;i>=0;i--) 71 for(int j=32;j>=0;j--) 72 if(bits[i]>0 && bits[j]>0) 73 { 74 p=1; 75 for(int l=1;l<=cnt;l++) 76 if(f[i][l]^f[j][l]) 77 { 78 p++; 79 break; 80 } 81 if(i+j-p>=0) 82 ans+=(1LL<<(i+j-p)); 83 else 84 { 85 res++; 86 } 87 ans+=res>>1; 88 res&=1; 89 } 90 return ; 91 } 92 93 void dfs(int pos,LL num) 94 { 95 96 if(pos>cnt) 97 { 98 //兩位高精度計算u高位,v低位,因為這東西太大了。k>=3的情況下ans和res也算是一個高精度的高位和低位關系。 99 LL u=0,v=1; 100 for(int i=1;i<=k;i++) 101 { 102 u*=num; 103 v*=num; 104 u+=v>>cnt; 105 v&=keepbit; 106 } 107 ans+=u; 108 res+=v; 109 ans+=res>>cnt; 110 res&=keepbit; 111 return ; 112 } 113 dfs(pos+1,num^per[pos]); 114 dfs(pos+1,num); 115 return ; 116 } 117 void solve3(int n,int k) 118 { 119 ans=0; 120 res=0; 121 keepbit=(1LL<<cnt)-1; 122 dfs(1,0); 123 return ; 124 } 125 int main() 126 { 127 scanf("%d%d",&n,&k); 128 for(int i=1;i<=n;i++) 129 scanf("%llu",&a[i]); 130 if(k==1) 131 solve1(n); 132 else if(k==2) 133 { 134 calc(32); 135 solve2(n); 136 } 137 else 138 { 139 calc(61/k+1); 140 solve3(n,k); 141 } 142 printf("%llu",ans); 143 if(res) printf(".5"); 144 printf("\n"); 145 return 0; 146 } View Code

?

轉載于:https://www.cnblogs.com/wujiechao/p/7781140.html

總結

以上是生活随笔為你收集整理的bzoj 3811: 玛里苟斯的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 青娱乐在线播放 | 九九热这里都是精品 | 亚洲视频图片 | 亚洲久久天堂 | 少妇综合 | 亚洲精品福利在线 | www.亚洲色图 | 日产亚洲一区二区三区 | 国产18页| 综合网亚洲 | 手机看片日韩在线 | 一区二区三区四区在线免费观看 | 美梦视频大全在线观看高清 | 国产猛男猛女超爽免费视频 | 公肉吊粗大爽色翁浪妇视频 | 91丨国产丨白丝 | 亚洲欧美一区二区三区不卡 | 丰满大乳国产精品 | 久久精品视频免费观看 | 亚洲天堂影院 | 精品在线看 | 国产精品乱码一区二区三区 | 爱爱网站视频 | 丰满少妇aaaaaa爰片毛片 | 一级特黄性色生活片 | 日日爽夜夜爽 | 好吊色网站 | 操韩国美女| 亚洲第一页夜 | 人人妻人人玩人人澡人人爽 | 中文字幕一区二区在线视频 | 自拍超碰在线 | 一级片视频免费 | 日本狠狠操 | 草草福利视频 | 亚洲AV成人无码久久精品同性 | 精品免费久久 | av在线播放中文字幕 | 最新最近中文字幕 | 国产精品久久久久99 | 黄色中文 | 国模在线| 亚洲色图图片 | 国产欧美一区二区精品性色99 | 天堂资源中文在线 | 人妖天堂狠狠ts人妖天堂狠狠 | 欧美一区二区黄片 | jizz自拍| 国产中年熟女高潮大集合 | 成人黄色三级视频 | 亚洲激情一区二区 | 黄色不打码视频 | 碧蓝之海动漫在线观看免费高清 | 人人cao | 久久久久久成人精品 | 成人精品久久 | 日本熟妇色xxxxx日本免费看 | 亚洲国产清纯 | 少妇荡乳情欲办公室456视频 | 久久久美女视频 | 热久久亚洲| 成年女人色毛片 | 日韩黄色片在线观看 | 国产农村妇女精品一二区 | 神马香蕉久久 | 国产男女av | 猎艳山村丰满少妇 | 中国精品久久久 | 三级黄色网 | 色又色| 巨大乳の揉んで乳榨り奶水 | 国产精品色哟哟 | 中文字幕精品一二三四五六七八 | 欧美影院在线 | 国产jjizz一区二区三区视频 | 伊人中文在线 | 大陆明星乱淫(高h)小说 | 91亚色视频在线观看 | 日韩性xxx | 欧美高清成人 | 夜色成人网 | av免费观看在线 | 亚洲精品小视频 | 色综合免费 | 色乱码一区二区三区网站 | 97在线免费视频观看 | 中文字幕av在线播放 | 国产老头和老头xxxx× | 欧美精品在线观看 | 黄色免费在线网站 | 91视频首页| 奇米影视第四色7777 | 日韩精品人妻中文字幕 | 亚欧洲精品视频在线观看 | 伊人情人综合网 | 亚洲国产aⅴ成人精品无吗 日韩乱论 | 三级色视频 | 日产精品久久久 | 国产白嫩美女无套久久 |