zoukankan      html  css  js  c++  java
  • Codeforces-713A Sonya and Queries

    题目大意:

    + x表示向一个mutiset里增加一个数x

    - x表示向一个mutiset里面减少一个数x

    ? x表示询问这个mutiset里面能够与x匹配的数的个数,匹配规则是x只由01组成,0表示偶数,1表示奇数。当x比要匹配的数长度短的时候,在x前面补0,当x比要匹配的数长度长的时候,在待匹配的数前面补0

    解题思路:

    乍一看觉得应该用字典树写。其实不然。

    直接设一个长度为2^18的数组a,a[i]的意思是,能与状态i匹配的数字的个数。

    代码:

    #include <map>
    #include <set>
    #include <queue>
    #include <stack>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <cstdlib>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <functional>
    using namespace std;
    
    #define mp make_pair
    #define pb push_back
    #define lson (rt << 1)
    #define rson (rt << 1 | 1)
    
    typedef long long LL;
    typedef pair<int, int> pi;
    
    const int maxn = (1 << 18) + 10;
    
    int cas;
    int st[maxn];
    
    int main() {
    	ios::sync_with_stdio(false); cin.tie(0);
    	cin >> cas;
    	while (cas--) {
    		char op; 
    		LL num, tmp, los = 0;
    		cin >> op >> num;
    		int status = 0;
    		while (num) {
    			tmp = num % 10;
    			num /= 10;
    			if (tmp & 1) status |= (1 << los);
    			++los;
    		}
    		//cout << status << endl;
    		if (op == '+') st[status] += 1;
    		else if (op == '-') st[status] -= 1;
    		else cout << st[status] << endl;
    	}
    	//system("pause");
    	return 0;
    }</span>


  • 相关阅读:
    .Net常用的命名空间
    Jquery测试纠错笔记
    第一章 学习总结
    Java和C++引用的区别
    gin的墙内开发艺术
    golang几个环境变量的问题
    Leetcode240_搜索二维矩阵II
    Leetcode1358_包含所有三种字符的子字符串数目
    Leetcode1354_多次求和构造目标数组
    Leetcode1353_最多可以参加的会议数目
  • 原文地址:https://www.cnblogs.com/wiklvrain/p/8179350.html
Copyright © 2011-2022 走看看