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 , 在看它之前是否出现过,如此一来,之前算法的速度有显著提升。

代码&注释:

  1. #include "bits/stdc++.h"
  2.  
  3. using namespace std ;
  4. const int maxN = ;
  5. typedef long long QAQ ;
  6.  
  7. char op[ ] ;
  8.  
  9. QAQ Ans ;
  10. int buc [ maxN ] ;
  11.  
  12. void Creat ( int Bit , int x , int k ) {
  13. if ( x== ) {//拆分完
  14. Ans += buc[ k ] ;//统计
  15. return ;
  16. }
  17. else {
  18. int t = x % ;//二进制拆分
  19. if ( t== ) {//最后一位是一则生成数对应位置可以为1或0
  20. Creat ( Bit + , x / , k ) ;
  21. Creat ( Bit + , x / , k + ( << Bit ) ) ;
  22. }
  23. else {//只能为1
  24. Creat ( Bit + , x / , k ) ;
  25. }
  26. }
  27. }
  28. int main ( ) {
  29. int T , N ;
  30. freopen ( "subset.in","r",stdin) ;
  31. freopen ( "subset.out","w" , stdout ) ;
  32. scanf ( "%d" , &T ) ;
  33. while ( T-- ) {
  34. scanf ( "%s %d" , op , &N ) ;
  35. if ( op[ ]=='a' ) ++ buc[ N ] ;
  36. else if ( op[ ]=='d' ) -- buc[ N ] ;
  37. else if ( op[ ] == 'c' ) {
  38. Ans = ;
  39. Creat ( , N , ) ;
  40. printf ( "%I64d\n" , Ans ) ;
  41. }
  42. }
  43. return ;
  44. }

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. ASP.NET MVC中的Razor语法

    1.Razor的基本语法 @* 多行代码时需要包含在大括号内{}和每句代码后都需要加分号; *@ @{ ViewBag.Title = "Index"; ViewBag.Name ...

  2. volatile关键字与线程间通信

    >>Java内存模型 现在计算机普遍使用多处理器进行运算,并且为了解决计算机存储设备和处理器的运算速度之间巨大的差距,引入了高速缓存作为缓冲,缓存虽然能极大的提高性能,但是随之带来的缓存一 ...

  3. MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet(转载)

    转载地址:http://blog.csdn.net/21aspnet/article/details/21867241 1.安装准备 1).下载安装MyEclipse2014,这已经是最新版本. 2) ...

  4. Swipe to back not working滑动后退功能消失?

    如果你发现滑动后退功能突然失效了,很可能是因为你隐藏了NavigationBar 或者定制了 leftBarButtonItem(s) 这会导致 NavigationController 的 inte ...

  5. Install Docker on Mac OS X(转)

    Install Docker on Mac OS X You can install Docker using Boot2Docker to run docker commands at your c ...

  6. proxifier 代理bluestack

    proxycap 可以很方便的代理bluestack, 但是proxycap 的破解版现在越来越不好用了,而且不小心还会中个病毒,这个时候免费的proxifier就显得更加的可爱了. 但是有个问题,就 ...

  7. WPF QuickStart系列之数据绑定(Data Binding)

    这篇博客将展示WPF DataBinding的内容. 首先看一下WPF Data Binding的概览, Binding Source可以是任意的CLR对象,或者XML文件等,Binding Targ ...

  8. [SQL]oracle 的to_char、to_number、to_date用法

    关键字: oracle 的to_char.to_number.to_date用法 TO_CHAR 是把日期或数字转换为字符串TO_DATE 是把字符串转换为数据库中得日期类型转换函数TO_NUMBER ...

  9. TI Zigbee Light Link 参考设计

    TI  Zigbee Light Link 参考设计 原文出处: http://processors.wiki.ti.com/index.php/Category:ZigBee_Light_Link ...

  10. Java中引用类 strong reference .SoftReference 、 WeakReference 和 PhantomReference的区别

      当在 Java 2 平台中首次引入 java.lang.ref 包,其中包含 SoftReference . WeakReference 和 PhantomReference 三个引用类,引用类的 ...