hdu 3006 位运算
生活随笔
收集整理的這篇文章主要介紹了
hdu 3006 位运算
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我是看題解才知道思路的。
這題充分體現了位運算的神奇。
看題目(1<=m<=14) ?是不是隱隱約約有什么感覺?
對的,就是位運算暴力求解。
對于每個集合 比如 1(01) 2(10) ? 那就存3(11) ?然后每次再遍歷一遍即可。
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int s[1<<14]; int main() {int n,m,i;while(scanf("%d%d",&n,&m)!=EOF){memset(s,0,sizeof(s));while(n--){int k;scanf("%d",&k);int y=0;while(k--){int t;scanf("%d",&t);y=y|(1<<(t-1));}s[y]=1;for(i=0;i<=1<<14;i++){if(s[i]&&(i!=y)){s[i|y]=1;} }} int ans=0;for(i=0;i<=(1<<14);i++){if(s[i])ans++;} printf("%d\n",ans);} }
??
總結
以上是生活随笔為你收集整理的hdu 3006 位运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 1251 trie
- 下一篇: hdu 2222 ac自动机