博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018 ACM-ICPC 沈阳网络赛 I. Lattice's basics in digital electronics[模拟+bitwise trie]
阅读量:6187 次
发布时间:2019-06-21

本文共 1703 字,大约阅读时间需要 5 分钟。

我好咸啊,一个多小时才写完这sb题

给一个长2e5的16进制原串(要转成2进制)

要解密这个串
首先要判断是否合法,把原串分成9位一段(最后不够9个的不要了),对于每段 统计前8位1的个数 第9位是校验码,1的个数是偶数 第9位是1 或者1的个数是奇数 第九位是0 都是合法的 否则不合法
然后把合法的串拼起来
给出一些(<=256)解密规则 形如 x(十进制) y(二进制) 代表y解密后是x 保证任何一个y不会是其他的y的前缀
要求输出解密后的串

#include 
using namespace std;char s[MAXN*4], s2[MAXN*4], tmp[15];int Len, n, len, x, top, Case, top1;struct bittrie { int t[MAXN*4][2], cnt; int isword[MAXN*4]; inline void init() { mset(t, 0), mset(isword, 0); cnt = 0; } inline void insert(int cur, char *p) { int u = 0; while (*p) { int v = *p++ - '0'; int &x = t[u][v]; u = x ? x : x = ++cnt; } isword[u] = cur; } inline int query(char *p) { int u = 0, tt = 0; while (*p) { int v = *p++ - '0'; u = t[u][v]; ++tt; if (isword[u]) return putchar(isword[u]), tt; } }}T;int main() { in, Case; while(Case--) { T.init(); in, Len, n; top1 = top = 0; lop(i,1,n) { in, x, tmp; T.insert(x, tmp); } in, s+1; for(int i = 1; s[i]; ++i) { int tt; if (islower(s[i])) s[i] -= 32; if (isdigit(s[i])) tt = s[i] - '0'; else tt = s[i] - 'A' + 10; for(int j = 3; j >= 0; --j) s2[++top] = ((tt & (1 << j)) != 0) + '0'; s[i] = 0; } top = (top / 9) * 9; assert(top%9==0); for(int i = 1; i <= top; i += 9) { int cnt = 0; for(int j = i; j <= i + 7; ++j) if (s2[j] == '1') ++cnt; if ((cnt & 1) != s2[i+8] - '0') for(int j = i; j <= i + 7; ++j) s[++top1] = s2[j]; } s[top1+1] = '\0'; int cur = 1, tt = 0; while (cur <= top1) { cur += T.query(s+cur); if (++tt == Len) break; } puts(""); } return 0;}

转载于:https://www.cnblogs.com/storz/p/10191107.html

你可能感兴趣的文章
我的友情链接
查看>>
软件发布实践
查看>>
nav-blue
查看>>
rabbitmq基础
查看>>
Windows 8连接××× 691错误解决办法
查看>>
jquery mobile日后开发可能会遇到的问题
查看>>
在服务器上排除问题的头五分钟
查看>>
ORA-32001:write to SPFILE requested but no SPFILE is in use问题的解决
查看>>
find中的德摩根定律和条件权限perm
查看>>
(一)关于ThinkPHP2.1版本操作MSSQL类的BUG--count统计结果异常
查看>>
采用Tokyo Tyrant构建兼容Memcached协议、支持故障转移的分布式DB缓存【推荐64位环境】...
查看>>
细说字体 Sans Serif 与 Serif
查看>>
获取activity上所有的控件
查看>>
Cadence Allegro小技巧-从外部文本文件添加文本
查看>>
全局光照---小结
查看>>
分糖果 Distribute Candies
查看>>
bash脚本编程之五 while循环
查看>>
kernel 崩溃
查看>>
Incorrect key file for table '/tmp/#sql_bd2_0.MYI'解决
查看>>
我的友情链接
查看>>