subset

3.1 题目描述

    一开始你有一个空集,集合可以出现重复元素,然后有 Q 个操作
    1. add s 在集合中加入数字 s。

    2. del s 在集合中删除数字 s。保证 s 存在

    3. cnt s 查询满足 a&s = a 条件的 a 的个数
3.2 输入

    第一行一个整数 Q 接下来 Q 行,每一行都是 3 个操作中的一个

3.3 输出

    对于每个 cnt 操作输出答案
3.4 Sample Input

    7

    add 11

    cnt 15

    add 4

    add 0

    cnt 6

    del 4

    cnt 15
3.5 Sample Output

    1 2 2
3.6 数据范围及约定

    对于 30% 的数据满足:1 ≤ n ≤ 1000

    对于 100% 的数据满足,1 ≤ n ≤ 200000 , 0 < s < 216

————————————————分割线————————————————

分析:

  对于30%的数据直接模拟cnt每次扫一遍即可。

  对于100%的数据,上述算法主要在cnt统计上较慢,那么可以找&运算的规律,即同一得一。

  我们可以生成一些数,使得它满足 a&s=a , 在看它之前是否出现过,如此一来,之前算法的速度有显著提升。

代码&注释:

 #include "bits/stdc++.h" 

 using namespace std ;
const int maxN = ;
typedef long long QAQ ; char op[ ] ; QAQ Ans ;
int buc [ maxN ] ; void Creat ( int Bit , int x , int k ) {
if ( x== ) {//拆分完
Ans += buc[ k ] ;//统计
return ;
}
else {
int t = x % ;//二进制拆分
if ( t== ) {//最后一位是一则生成数对应位置可以为1或0
Creat ( Bit + , x / , k ) ;
Creat ( Bit + , x / , k + ( << Bit ) ) ;
}
else {//只能为1
Creat ( Bit + , x / , k ) ;
}
}
}
int main ( ) {
int T , N ;
freopen ( "subset.in","r",stdin) ;
freopen ( "subset.out","w" , stdout ) ;
scanf ( "%d" , &T ) ;
while ( T-- ) {
scanf ( "%s %d" , op , &N ) ;
if ( op[ ]=='a' ) ++ buc[ N ] ;
else if ( op[ ]=='d' ) -- buc[ N ] ;
else if ( op[ ] == 'c' ) {
Ans = ;
Creat ( , N , ) ;
printf ( "%I64d\n" , Ans ) ;
}
}
return ;
}

NOIP_RP++;

2016-10-06 21:18:29

(完)

20161005 NOIP 模拟赛 T3 解题报告的更多相关文章

  1. 20161005 NOIP 模拟赛 T2 解题报告

    beautiful 2.1 题目描述 一个长度为 n 的序列,对于每个位置 i 的数 ai 都有一个优美值,其定义是:找到序列中最 长的一段 [l, r],满足 l ≤ i ≤ r,且 [l, r] ...

  2. 【HHHOJ】NOIP模拟赛 玖 解题报告

    点此进入比赛 得分: \(100+20+100=220\)(还不错) 排名: \(Rank\ 16\) \(Rating\):\(+20\) \(T1\):[HHHOJ263]「NOIP模拟赛 玖」三 ...

  3. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  4. NOIP欢乐模拟赛 T3 解题报告

    3.小澳的葫芦 (calabash.cpp/c/pas) [题目描述] 小澳最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他尽了洪荒之力,唱响心中圣歌. 随之,小澳进入了葫芦世界. 葫芦世界 ...

  5. CH Round #55 - Streaming #6 (NOIP模拟赛day2)解题报告

    T1九九归一 描述 萌蛋在练习模n意义下的乘法时发现,总有一些数,在自乘若干次以后,会变成1.例如n=7,那么5×5 mod 7=4,4×5 mod 7=6,6×5 mod 7=2,2×5 mod 7 ...

  6. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)解题报告

    最近参加了很多CH上的比赛呢~Rating--了..题目各种跪烂.各种膜拜大神OTZZZ T1珠 描述 萌蛋有n颗珠子,每一颗珠子都写有一个数字.萌蛋把它们用线串成了环.我们称一个数字串是有趣的,当且 ...

  7. 20161007 NOIP 模拟赛 T1 解题报告

    排序 3.1 题意描述 众所周知,熟练掌握至少一种排序算法是参加NOIP的必备技能.常见的排序算法有冒泡 排序.归并排序.快速排序.奇偶排序.猴子排序.梳排序.鸡尾酒排序.臭皮匠排序等. 在这里,介绍 ...

  8. 20161003 NOIP 模拟赛 T2 解题报告

    Weed duyege的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹. 为了查出真相,duyege 准备修好电脑之后再进行一次金坷垃的模拟实验. 电脑上面有若干层金坷垃,每次只能在上面撒上一层高度为 ...

  9. 20161004 NOIP 模拟赛 T1 解题报告

    第1题  小麦亩产一千八 [问题描述] “有了金坷垃,肥料一袋能顶两袋撒,小麦亩产一千八,吸收两米下的氮磷钾……”,话说HYSBZ(Hengyang School for Boys & Zy) ...

随机推荐

  1. SQL小纸条--一些方便平时参考的SQL语句--随用随查

    SQL 语句 语句 语法 AND / OR SELECT column_name(s)FROM table_nameWHERE conditionAND|OR condition ALTER TABL ...

  2. 【JAVA多线程中使用的方法】

    一.sleep和wait的区别. 1.wait可以指定时间,也可以不指定. 而sleep必须制定. 2.在同步的时候,对于CPU的执行权和以及锁的处理不同. wait:释放执行权,释放锁. sleep ...

  3. JDK 1.5 1.6 override区别

    今天在更新时发现有个别项目报错,报错信息 到网上搜索了之后,根据网上描述,修改了一批配置都不行: http://bestchenwu.iteye.com/blog/997420(这个里面的方法二,即为 ...

  4. [Linux] 取得服务器版本

    1) 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如: [root@3.5.5Biz-46 ~]# lsb_release -a LSB Version: 1.3 Dis ...

  5. C++读取txt文件

    1. 逐行读入 void readTxt(string file) { ifstream infile; infile.open(file.data()); //将文件流对象与文件连接起来 asser ...

  6. Shadow SSDT详解、WinDbg查看Shadow SSDT

    一.获取ShadowSSDT 好吧,我们已经在R3获取SSDT的原始地址及SDT.SST.KiServiceTbale的关系里面提到:所有的SST都保存在系统服务描述表(SDT)中.系统中一共有两个S ...

  7. mysql 导出表结构和表数据 mysqldump用法

    mysql 导出表结构和表数据 mysqldump用法 命令行下具体用法如下:   mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据mysq ...

  8. loadrunner生成随机身份证和银行卡号

    生成银行卡号码: Action() { char card[19] = {'6','2','2','7','0','0','0','0','0','0','0','0','0','0','0','0' ...

  9. JavaScript设计模式——前奏(封装和信息隐藏)

    前面一篇讲了js设计模式的前奏,包括接口的讲解.. 三:封装和信息隐藏: 信息隐藏用来进行解耦,定义一些私有的数据和方法. 封装是用来实现信息隐藏的技术,通过闭包实现私有数据的定义和使用. 接口在这其 ...

  10. 2016.8.22 JavaScript入门之三

    1.对一个数组的末尾追加数据的一种简便方法是通过push()功能. 例如: var myArray = [["John", 23], ["cat", 2]];m ...