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. Linux桌面选型

    Arch Linux 官方仓库提供的桌面环境有 Cinnamon: cinnamon Enlightenment: enlightenment17 GNOME: gnome gnome-extra K ...

  2. foreach与Iterable学习

    以前对于foreach的使用都是自然而然的感觉,没有深究过为什么可以用,什么时候可以用.最近才发现,原来那些可以使用的类,都是实现了Iterable接口的,否则根本就不能用. 下面是我之前学习时候写的 ...

  3. html5 基本布局+新标签+新选择器 + 线性渐变

    html5 基本布局+新标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  4. PMP 第一章 引论

    1 项目的特点 独特性 临时性 但创造的成果一般和其特点相反. 2 什么是项目管理? 什么是项目? 项目管理就是将知识 技能 工具与技术应用于项目活动,以满足项目的要求,达到项目的目的. 项目管理通过 ...

  5. 从DataReader中手动串行化JSON

    void WriteDataReader(StringBuilder sb, IDataReader reader) { ) { sb.Append("null"); return ...

  6. Blog Starting...

    30出头,开始Blog记录学习生活的点滴,待40时再回来一看.

  7. hashlib加密操作模块

    import hashlib#加密操作obj=hashlib.md5(bytes("hasdfghjklcxz",encoding="utf-8"))#加密操作 ...

  8. 编解码-java序列化

    大多数Java程序员接触到的第一种序列化或者编解码技术就是Java的默认序列化,只需要序列化的POJO对象实现java.io.Serializable接口,根据实际情况生成序列ID,这个类就能够通过j ...

  9. SpringJDBC解析1-使用示例

    JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组 ...

  10. HDU 2609 最小表示法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2609 题意:给定n个循环链[串],问有多少个本质不同的链[串](如果一个循环链可以通过找一个起点使得和 ...