• ACM-ICPC 2018 沈阳赛区网络预赛-I模拟题啊!!!


    垃圾题,题目巨TM长。。。这题题意就是说给你一个16进制串,让你把每一位转成长度为4的2进制数,并把这些数连接起来,连接完成后,进行奇偶校验,把字符串切割成每个长度为9的字符串,然后计算前8位的

    1的个数,,最后一位是校验位,如果1的个数为奇数 那么校验位应该是1,如果1的个数为偶数,那么校验位应该是0,如果满足,就保留验证的8位去掉校验位,否则去掉整个;然后给了M个字符串对应的ASCll,把验证位置留下来的东西,进行和字符串匹配,然后输出N个对应ASCll的字符???

    这题意很绕啊。。。不过纯模拟很烦啊,用unorder_map的快速查找和string的可加性,以及string.substr的强大功能这题迎刃而解啦!!!

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<unordered_map>
    #include<map>
    #include<vector>
    #pragma GCC optimize(2)
    using namespace std;
    unordered_map<string,int> mp;
    unordered_map<char,string> table;
    void init(){
      table['0']="0000";
      table['1']="0001";
      table['2']="0010";
      table['3']="0011";
      table['4']="0100";
      table['5']="0101";
      table['6']="0110";
      table['7']="0111";
      table['8']="1000";
      table['9']="1001";
      table['a']="1010";
      table['A']="1010";
      table['B']="1011";
      table['b']="1011";
      table['C']="1100";
      table['c']="1100";
      table['D']="1101";
      table['d']="1101";
      table['E']="1110";
      table['e']="1110";
      table['F']="1111";
      table['f']="1111";
    }
    int main(){
       int t;
       int n,m;
       string s;
       string str2;
       string ans;
       scanf("%d",&t);
       init();
       vector<int>vec;
       while(t--){
          vec.clear();
          mp.clear();
          scanf("%d%d",&n,&m);
          int tmp;
          string tmps;
          for (int i=1;i<=m;i++){
             cin>>tmp>>tmps;
             mp[tmps]=tmp;
          }
          cin>>s;
          int len=s.length();
          str2.clear();
          ans.clear();
          tmps.clear();
          for (int i=0;i<len;i++){
             str2+=table[s[i]];
            // cout<<table[s[i]]<<" ";
          }
         //cout<<str2<<endl;
          len=str2.length();
    
          for(int i=0;i<len;i+=9){
            tmps=str2.substr(i,9);
            //cout<<tmps<<" ";
            int cnt=0;
            if (tmps.length()!=9)break;
            for (int j=0;j<8;j++){
                if (tmps[j]=='1')cnt++;
            }
            //cout<<cnt<<endl;
            if(cnt%2==0 && tmps[8]=='1'){
                ans+=tmps.substr(0,8);
            }else if (cnt%2==1 && tmps[8]=='0'){
                ans+=tmps.substr(0,8);
            }
            tmps.clear();
          }
          len=ans.length();
          tmps.clear();
          for (int i=0;i<len;i++){
            tmps+=ans[i];
            if (mp[tmps]!=0){
               vec.push_back(mp[tmps]);
               tmps.clear();
            }
          }
          int sz=vec.size();
          for (int i=0;i<sz;i++){
            if (i==n)break;
            printf("%c",vec[i]);
          }
          printf("
    ");
       }
      return 0;
    }
    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    我的公众号 猫和大叔(maohedashu)
    centos编译php时出现make: *** [sapi/fpm/phpfpm] Error 1
    如何在centos和linux等主机上安装 pstree
    如何在centos下卸载干净nginx
    监控感悟(一)
    ant design vue 获取上传图片的像素
    ant vue中atree默认展开指定的树节点不起作用
    uniapp中组件属性设置不生效的解决方案
    vue+canvas实现简易画板
    ant design vue级联选择懒加载省市区三级数据
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9630524.html
Copyright © 2020-2023  润新知