• Codeforces714C【映射】


    题意:
    T次操作;
    +的话就是往 multiset 塞进一个;
    -的话就是往 multiset 去除一个;
    ?操作
    思路:
    +和-操作就是处理字符串直接实现一个原字符串改成”01“的映射,
    然后去问下,对于每个数字可以搞成18个长度的,然后+1,然后询问一下就好了;
    中间如果碰到1的话就说明比他短的都不能匹配,因为比他短的只能是往左添0…
    挫代码贴一发:

    #include <bits/stdc++.h>
    #include <string>
    using namespace std;
    typedef __int64 LL;
    map<string,int>mp;
    int main()
    {
        char x[2];
        string tmp,t1,t2;
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%s",x);
            if(strcmp(x,"+")==0)
            {
                cin>>tmp;
                t1.clear();
                string::iterator it;
                for(it=tmp.begin();it!=tmp.end();it++)
                {
                    if((*it-'0')%2)
                        t1+="1";
                    else
                        t1+="0";
                }
                mp[t1]++;
            }
            else if(strcmp(x,"-")==0)
            {
                cin>>tmp;
                t1.clear();
                string::iterator it;
                for(it=tmp.begin();it!=tmp.end();it++)
                {
                    if((*it-'0')%2)
                        t1+="1";
                    else
                        t1+="0";
                }
                mp[t1]--;
            }
            else
            {
                int ans;
                ans=0;
                cin>>tmp;
                ans+=mp[tmp];
                t1=tmp;
                while(tmp[0]!='1')
                {
                    t1=t1.substr(1);
                    if(t1.empty())
                        break;
                    ans+=mp[t1];
                    if(t1[0]=='1')
                        break;
                }
                t1.clear();
                t2="0";
                while(1)
                {
                    t1=t2+tmp;
                    if(t1.size()>18)
                        break;
                    tmp=t1;
                    ans+=mp[tmp];
                }
                printf("%d
    ",ans);
            }
        }
        return 0;
    }
  • 相关阅读:
    Python操作Mongo数据库
    Python正则模块
    Python时间模块
    Python协程(下)
    Python协程(中)
    Python协程(上)
    aiohttp
    常用排序算法的Python实现
    江苏省各地级市58同城租房数据
    百合网
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934792.html
Copyright © 2020-2023  润新知