P3857-[TJOI2008]彩灯【线性基】
生活随笔
收集整理的這篇文章主要介紹了
P3857-[TJOI2008]彩灯【线性基】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
題目鏈接:https://www.luogu.com.cn/problem/P3857
題目大意
nnn個彩燈,mmm個開關能使得某些彩燈取反,求有多少種彩燈樣式。
解題思路
其實就是mmm個數種若干個數異或起來有多少不同的數。
又是一道考線性基性質的題目,因為線性基中任何一個數不為其他數的異或和。也就是在線性基中我們選出若干個數異或起來,選擇方案不同結果必然不同。
所以sizsizsiz表示線性基大小的話,答案就是2siz2^{siz}2siz
codecodecode
#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll N=80; ll n,m,ans,d[N]; char s[N]; void add(ll x){for(ll i=n;i>=0;i--)if((x>>i)&1){if(d[i])x^=d[i];else{ans++;d[i]=x;break;}}return; } int main() {scanf("%lld%lld",&n,&m);for(ll i=1;i<=m;i++){ll x=0;scanf("%s",s);for(ll j=0;j<n;j++)x|=(s[j]=='O')*(1ll<<j);add(x);}printf("%lld",(1ll<<ans)%2008); }總結
以上是生活随笔為你收集整理的P3857-[TJOI2008]彩灯【线性基】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3000元游戏电脑配置清单(3000游戏
- 下一篇: P4301-[CQOI2013]新Nim