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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

洛谷3857 [TJOI2008]彩灯

發(fā)布時間:2025/7/25 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷3857 [TJOI2008]彩灯 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目描述

已知一組彩燈是由一排N個獨立的燈泡構成的,并且有M個開關控制它們。從數(shù)學的角度看,這一排彩燈的任何一個彩燈只有亮與不亮兩個狀態(tài),所以共有2N個樣式。由于技術上的問題,Peter設計的每個開關控制的彩燈沒有什么規(guī)律,當一個開關被按下的時候,它會把所有它控制的彩燈改變狀態(tài)(即亮變成不亮,不亮變成亮)。假如告訴你他設計的每個開關所控制的彩燈范圍,你能否幫他計算出這些彩燈有多少種樣式可以展示給他的女朋友?

注: 開始時所有彩燈都是不亮的狀態(tài)。

輸入輸出格式

輸入格式:

每組測試數(shù)據(jù)第一行為兩個整數(shù)N和M,用空格隔開。緊接著是有M行,每行都是一個長度為N的字符串,表示一個開關控制彩燈的范圍(N盞燈),如果第i個字母是大寫字母’O’,則表示這個開關控制第i盞燈,如果第i個字母是大寫字母’X’,則表示這個開關不控制此燈。

輸出格式:

輸出這些開關和彩燈可以變換出來的樣式數(shù)目。由于這個值可能會很大,請求出它對于整數(shù)2008的余數(shù)。

輸入輸出樣例

輸入樣例#1:
2 3 OO XO OX 輸出樣例#1:
4

說明

可見樣例中第一個開關控制了所有的彩燈,而后兩個開關分別控制了第一個和第二個彩燈,這樣我們可以只用后兩個開關控制彩燈,可以變換出來所有的22個狀態(tài)。

30%的數(shù)據(jù)中,N和M不超過15。

70%的數(shù)據(jù)中,N和M不超過50。

?

本題可以翻譯成給出M個N位二進制數(shù) , 取若干個異或,求有多少種結果。

本質就是求出線性基的個數(shù)x,結果即為2^x

線性基就是把原有的集合用一個新的集合替代之,新的集合里面數(shù)相互異或可以得出原有集合的數(shù)相互異或的答案。

搞出線性基的性質 : a 和 b 的所有xor 結果 等同于 a和 a xor b的所有結果

代碼

#include<bits/stdc++.h> using namespace std; int N,M,cnt,ans; long long P[128]; char s[128]; void insert(long long x) {for(int i=62;i>=0;i--)if((x>>i)&1){if(!P[i]){P[i]=x;break;}else x^=P[i];} } int main() {scanf("%d%d",&N,&M);for(int i=1;i<=M;i++){scanf("%s",s);long long a=0;for(int j=0;j<N;j++)if(s[j]=='O')a^=(1ll<<j);insert(a);}for(int i=0;i<=62;i++)if(P[i])ans++;printf("%lld",(1ll<<ans)%2008);return 0; }

?

轉載于:https://www.cnblogs.com/Elfish/p/7649059.html

總結

以上是生活随笔為你收集整理的洛谷3857 [TJOI2008]彩灯的全部內容,希望文章能夠幫你解決所遇到的問題。

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