zoukankan      html  css  js  c++  java
  • 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(添加时记得备注)
  • 相关阅读:
    使用Nginx实现反向代理
    nginx配置
    jsonp跨域实现单点登录,跨域传递用户信息以及保存cookie注意事项
    jsonp形式的ajax请求:
    面试题
    PHP设计模式_工厂模式
    Redis限制在规定时间范围内登陆错误次数限制
    HTTP 状态码简介(对照)
    Django 进阶(分页器&中间件)
    Django 之 权限系统(组件)
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9630524.html
Copyright © 2011-2022 走看看