zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Flink--Window apply
    Flink--time-window 的高级用法
    Flink的Windows
    Flink的流处理--KeyBy
    Flink的分布式缓存
    Flink的广播变量
    Flink--本地执行和集群执行
    Flink-- 数据输出Data Sinks
    存储管理-页式管理
    存储管理-覆盖技术和交换技术
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934792.html
Copyright © 2011-2022 走看看