生活随笔
收集整理的這篇文章主要介紹了
SUBSET
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
DESCRIPTION:
一開始你有一個空集,集合可以出現(xiàn)重復元素,然后有Q 個操作
1. add s
在集合中加入數(shù)字s。
2. del s
在集合中刪除數(shù)字s。保證s 存在
3. cnt s
查詢滿足a&s = a 條件的a 的個數(shù)
INPUT:
第一行一個整數(shù)Q 接下來Q 行,每一行都是3 個操作中的一個
OUTPUT:
對于每個cnt 操作輸出答案
SAMPLE INPUT:
7
add 11
cnt 15
add 4
add 0
cnt 6
del 4
cnt 15
SAMPLE OUTPUT:
1
2
2
數(shù)據(jù)范圍:
30%:1<=n<=1000
100%:1<=n<=200000, 0<=s<=2^16
#include<cstdio>
using namespace std;
int main()
{freopen("subset.in",
"r",stdin);freopen("subset.out",
"w",stdout);int q(
0),s(
0),suffix(
0),preffix(
0),cnt(
0);static int ms[
256][
256];char buf[
5];scanf("%d",&
q);while(q){q--
;scanf("%s%d",buf,&
s);switch(buf[
0]){case'a':preffix=s>>
8;s=s&
255;for(suffix=s;suffix<=
255;suffix++
)if((s&suffix)==
s)ms[preffix][suffix]++
;break;case'c':suffix=s&
255;s=s>>
8;cnt=
0;for(preffix=s;preffix>=
0;preffix--
)if((preffix&s)==
preffix)cnt+=
ms[preffix][suffix];printf("%d\n",cnt);break;case'd':preffix=s>>
8;s=s&
255;for(suffix=s;suffix<=
255;suffix++
)if((s&suffix)==
s)ms[preffix][suffix]--
;break;}}return 0;
} ?
轉載于:https://www.cnblogs.com/JebediahKerman/p/6011326.html
總結
以上是生活随笔為你收集整理的SUBSET的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。