ACM-ICPC 2018 沈阳赛区网络预赛 I. Lattice's basics in digital electronics 阅读题加模拟题
Posted suut
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACM-ICPC 2018 沈阳赛区网络预赛 I. Lattice's basics in digital electronics 阅读题加模拟题相关的知识,希望对你有一定的参考价值。
题意:https://nanti.jisuanke.com/t/31450
题解:题目很长的模拟,有点uva的感觉
分成四步
part1 16进制转为二进制string 用bitset的to_string()
part2 parity check 校对,将处理结果pushback到另一个string
part3 建字典树,用形如线段树的数组存
part4 遍历字典树
1A 233
#include<bitset> #include <cstdio> #include <cmath> #include <complex> #include <algorithm> #include <iostream> #include<string.h> #define rep(i,t,n) for(int i =(t);i<=(n);++i) #define per(i,n,t) for(int i =(n);i>=(t);--i) #define mmm(a,b) memset(a,b,sizeof(a)) typedef long long ll; using namespace std; const int maxn = 8e5; int tot = 0; const int MAXN = 10000009; bitset<maxn>bi; bitset<4>buff[200000+5]; char s[200000 + 5]; char tree[1024 * 4]; int n; string ss; string cd; int main() { int t; cin >> t; while (t--) { ss.clear(); cd.clear(); mmm(tree, 0); int n,m; cin >> m >> n; rep(i, 1, n) { int x; char op[11]; cin >> x >> op; int len = strlen(op); int now = 1; rep(j, 0, len - 1) { if (op[j] == ‘1‘) now = now * 2 + 1; else now = now * 2; } tree[now] = (char)x; } scanf("%s", s); int len = strlen(s); int tot = 0; rep(i, 0, len - 1) { if (isdigit(s[i]))buff[tot++] = s[i] - 0; else if (s[i] >= ‘a‘&&s[i] <= ‘z‘)buff[tot++] = s[i] - ‘a‘ + 10; else buff[tot++] = s[i] - ‘A‘ + 10; } //rep(i, 0, tot - 1)cout << buff[i] ;cout << endl; rep(i, 0, tot - 1) ss += buff[i].to_string(); len = ss.length(); int cnt = 0; rep(i, 0, len-1) { if (i % 9 == 8) { if (cnt % 2 == 0 && ss[i] == ‘1‘|| cnt % 2 == 1 && ss[i] == ‘0‘) { string temp = ss.substr(i - 8, 8); cd += temp; } } if (i % 9 == 0)cnt = 0; if (ss[i] == ‘1‘)cnt++; } len = cd.length(); rep(i, 0, len - 1) { int now = 1; while (now == 1 || !tree[now]) { if (cd[i] == ‘1‘) now = now * 2 + 1; else now = now * 2; i++; } printf("%c", tree[now]); m--; if (m == 0)break; i--; } cout << endl; } cin >> t; return 0; } /* 2 15 9 32 0100 33 11 100 1011 101 0110 104 1010 108 00 111 100 114 0111 119 0101 A6Fd021171c562Fde1 8 3 49 0001 50 01001 51 011 14DB24722698 */
以上是关于ACM-ICPC 2018 沈阳赛区网络预赛 I. Lattice's basics in digital electronics 阅读题加模拟题的主要内容,如果未能解决你的问题,请参考以下文章
ACM-ICPC 2018 沈阳赛区网络预赛-I模拟题啊!!!
ACM-ICPC 2018 沈阳赛区网络预赛 GSpare Tire
ACM-ICPC 2018 沈阳赛区网络预赛 ILattice's basics in digital electronics