POJ
来源:互联网 发布:天启小米抢购软件 编辑:程序博客网 时间:2024/06/05 07:25
bitset详细讲解
首先bitset<10>bit(5); 就可以直接把5转化成了相应的二进制了. 但是如果要输出. 必须先强制转化成int才能输出. 下标从0开始. 然后就是bitset之间的操作只能用bitset来判断, 比如说判断是否等于0. 那么应该先定义bitset<10>bit(0); 然后判 (注意优先级)(bitset[5] & bitset[28] )== bit ? 不能直接写 == 0 . !!!
例题: POJ - 2443
//题意: 给你很多集合. 问两个数是否存在在同一个集合.
//思路: 每一个数用一个bitset来存. 在的集合序号对应的二进制出令成1. 那么判断是否存在再相同集合, 直接对应的bitset 与 一下就行, 如果等于0就不在, 否则就在.
AC Code
const int maxn = 1e4+5;void solve(){ int n; scanf("%d",&n); bitset<1005> bit[maxn]; for(int i=1;i<=n;i++){ int k; scanf("%d",&k); while(k--){ int u; scanf("%d",&u); bit[u][i] = 1; } } int q; scanf("%d",&q); while(q--){ int u,v; scanf("%d%d",&u,&v); bitset<1005> tmp(0); if((bit[u] & bit[v]) == tmp){ printf("No\n"); } else printf("Yes\n"); }}
阅读全文
0 0