SUBSET

DESCRIPTION:
一开始你有一个空集,集合可以出现重复元素,然后有Q 个操作
1. add s
在集合中加入数字s。
2. del s
在集合中删除数字s。保证s 存在
3. cnt s
查询满足a&s = a 条件的a 的个数
INPUT:
第一行一个整数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
数据范围:
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;
}
时间: 2024-10-29 19:09:48

SUBSET的相关文章

Codeforces 837D Round Subset(背包)

题目链接  Round Subset 题意  在n个数中选择k个数,求这k个数乘积末尾0个数的最大值. 首先我们预处理出每个数5的因子个数c[i]和2的因子个数d[i] 然后就可以背包了. 设f[i][j]为选i个数,5的因子总和为j时,2的因子总和的最大值. 则状态转移方程为 $f[i][j] = max(f[i - 1][j - c[k]] + d[k])$ 注意边界条件 时间复杂度$O(5200nk)$ #include <bits/stdc++.h> using namespace s

Subset Sums

链接 分析:dp[i][j]表示前i个数能够组成j的对数,可得dp[i][j]=dp[i-1][j]+dp[i-1][j-i],所以最后dp[n][sum/2]既是所求 1 /* 2 PROB:subset 3 ID:wanghan 4 LANG:C++ 5 */ 6 #include "iostream" 7 #include "cstdio" 8 #include "cstring" 9 #include "string"

洛谷P1466 集合 Subset Sums

洛谷P1466 集合 Subset Sums这题可以看成是背包问题 用空间为 1--n 的物品恰好填充总空间一半的空间 有几种方案 01 背包问题 1.注意因为两个交换一下算同一种方案,所以最终 要 f [ v ] / 2 2.要开 long long 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cmath> 4 #include <cstring> 5 #include <string&g

【2016多校】T3 subset(分块,DP)

1 var dp:array[0..300,0..300]of longint; 2 s1,s2,n,i,x,j:longint; 3 ch:string; 4 5 procedure dfs1(var s1,s2:longint;k,s:longint); 6 begin 7 if k>7 then 8 begin 9 inc(dp[s1,s]); 10 exit; 11 end; 12 if s2 and (1<<k)>0 then dfs1(s1,s2,k+1,s+(1<

[LeetCode] Largest Divisible Subset 最大可整除的子集合

Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of elements in this subset satisfies: Si % Sj = 0 or Sj % Si = 0. If there are multiple solutions, return any subset is fine. Example 1: nums: [1,2,3] Re

AQL Subset Compiler:手把手教你如何写一个完整的编译器

项目地址(由于课程TA要求,代码地址在deadline后贴出,请见谅.) 转载请注明出处. 前言 这是学校里编译原理课程的大作业,此Project十分适合编译原理的学习,让基本不听课的我理解了一个编译器的编写过程. 所以忍不住想分享一下. 什么是AQL? 全称: Annotation Query Language 用于Text Analytics. 可以从非结构化或半结构化的文本中提取结构化信息的语言. 语法与SQL类似. 什么是AQL Subset? AQL语法复杂,功能强大,实现难度较高,作

ISLR系列:(4.1)模型选择--- Subset Selection

Linear Model Selection and Regularization 此博文是 An Introduction to Statistical Learning with Applications in R 的系列读书笔记,作为本人的一份学习总结,也希望和朋友们进行交流学习. 该书是The Elements of Statistical Learning 的R语言简明版,包含了对算法的简明介绍以及其R实现,最让我感兴趣的是算法的R语言实现. [转载时请注明来源]:http://www

Educational Codeforces Round 26 D. Round Subset(dp)

题目链接:Educational Codeforces Round 26 D. Round Subset 题意: 给你n个数,让你选其中的k个数,使得这k个数的乘积的末尾的0的个数最大. 题解: 显然,末尾乘积0的个数和因子2和因子5的个数有关. 然后考虑dp[i][j]表示选i个数,当前因子5的个数为j时,能得到因子2最多的为多少. 那么对于每个数,记录一下因子2和5的个数,做一些01背包就行了. 1 #include<bits/stdc++.h> 2 #define mst(a,b) me

Educational Codeforces Round 26 D. Round Subset 动态规划

D. Round Subset Let's call the roundness of the number the number of zeros to which it ends. You have an array of n numbers. You need to choose a subset of exactly k numbers so that the roundness of the product of the selected numbers will be maximum

R子集subset

> x<-c(6,1,2,3,NA,12) > x[x>5]    #x[5]是未知的,因此其值是否大于5也是未知的 [1]  6 NA 12 > subset(x,x>5)  #subset直接会把NA移除 [1]  6 12 > subset(airquality, Temp > 80, select = c(Ozone, Temp)) Ozone Temp 29     45   81 35     NA   84 36     NA   85 38