BZOJ 2145

题解

直接代词,所有格,常用副词,助动词,冠词,常用词打表 比较出现次数的多少来决定循环位移了几位。

CODE

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5200;
const int p = 137;
typedef unsigned long long ULL;
map<int,bool>vis;
inline ULL hsh(const char *s) {
ULL re = 0; int i = 0;
while(s[i])
re = re * p + (ULL)s[i++];
return re;
}
inline void ins(const char *s) { vis[hsh(s)] = 1; }
inline void dictionary() {
ins("his");
ins("her");
ins("is");
ins("are");
ins("who");
ins("whom");
ins("whose");
ins("whoever");
ins("was");
ins("were");
ins("i");
ins("we");
ins("you");
ins("they");
ins("them");
ins("me");
ins("go");
ins("and");
ins("no");
ins("please");
ins("or");
ins("but");
ins("so");
ins("because");
ins("although");
ins("good");
ins("bad");
ins("well");
ins("happy");
ins("a");
ins("the");
ins("at");
ins("i'm");
ins("in");
ins("on");
ins("by");
ins("my");
ins("your");
ins("rather");
ins("than");
ins("little");
ins("few");
ins("fewer");
ins("what");
ins("how");
ins("when");
ins("where");
ins("be");
ins("also");
ins("make");
ins("do");
ins("did");
ins("done");
ins("up");
ins("down");
ins("of");
ins("had");
ins("has");
ins("have");
ins("since");
ins("it");
ins("its");
ins("think");
ins("thought");
ins("thinking");
ins("their");
ins("for");
ins("find");
ins("with");
ins("been");
ins("better");
ins("worse");
ins("more");
ins("less");
ins("fine");
ins("set");
ins("you're");
ins("right");
ins("can");
ins("could");
ins("should");
ins("would");
ins("that");
ins("this");
ins("those");
ins("these");
ins("against");
ins("back");
ins("about");
ins("many");
ins("much");
ins("as");
ins("now");
ins("own");
ins("our");
ins("from");
ins("work");
ins("will");
ins("worst");
ins("best");
ins("never");
ins("ever");
ins("since");
ins("hit");
ins("within");
ins("before");
ins("after");
ins("if");
ins("whether");
ins("something");
ins("someone");
ins("somebody");
ins("anything");
ins("anyone");
ins("anybody");
ins("nothing");
ins("nobody");
ins("none");
ins("whatever");
ins("however");
ins("wherever");
ins("finally");
ins("home");
ins("very");
ins("quite");
ins("an");
ins("only");
ins("not");
ins("while");
ins("off");
ins("out");
ins("you're");
}
char s[5005], tmp[5005];
int l[5005], r[5005];
inline char solve(char x, int k) {
if(!isalpha(x)) return x;
if(x >= 'A' && x <= 'Z') return 'a' + (x-'A'+k)%26;
else return 'a' + (x-'a'+k)%26;
}
inline bool chk(char x) { return x == ' '|| x == ',' || x == '.' || x == '?' || x == '!' || x == ';' || x == '\n'; }
inline void get(char *S) {
char ch; int i = 0;
while((ch=getchar())=='\n');
S[i++] = ch;
while((ch=getchar())!='\n')S[i++]=ch;
S[i] = 0;
}
int main () {
dictionary();
int T = 10;
while(T--) {
int cur = 0, n;
get(s); n = strlen(s);
for(int i = 0; i < n; ++i) {
if(i == 0 || chk(s[i-1])) l[++cur] = i;
if(i == n-1 || chk(s[i+1])) r[cur] = i;
}
for(int i = 1; i <= cur; ++i)
if(s[r[i]] == '.' || s[r[i]] == '?' || s[r[i]] == '!' || s[r[i]] == ';' || s[r[i]] == ',') --r[i];
int mx = 0, ans = 0;
for(int k = 0; k <= 25; ++k) {
int now = 0;
for(int i = 1; i <= cur; ++i) {
for(int j = l[i]; j <= r[i]; ++j)
tmp[j-l[i]] = solve(s[j], k);
tmp[r[i]-l[i]+1] = 0;
now += vis[hsh(tmp)];
}
if(now > mx) mx = now, ans = k;
}
for(int i = 0; i < n; ++i) {
if(!isalpha(s[i])) putchar(s[i]);
else putchar(s[i] = (s[i] >= 'A' && s[i] <= 'Z') ? 'A' + (s[i]-'A'+ans) % 26 : 'a' + (s[i]-'a'+ans) % 26);
}
if(T) puts("");
}
}

BZOJ 2145: 悄悄话 (打表)的更多相关文章

  1. HYSBZ 2145 悄悄话

    2145: 悄悄话 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 271  Solved: 104[Submit][Status][Discuss] ...

  2. BZOJ 4513: [Sdoi2016]储能表 [数位DP !]

    4513: [Sdoi2016]储能表 题意:求\[ \sum_{i=0}^{n-1}\sum_{j=0}^{m-1} max((i\oplus j)-k,0) \] 写出来好开心啊...虽然思路不完 ...

  3. BZOJ.4513.[SDOI2016]储能表(数位DP)

    BZOJ 洛谷 切了一道简单的数位DP,终于有些没白做题的感觉了...(然而mjt更强没做过这类的题也切了orz) 看部分分,如果\(k=0\),就是求\(\sum_{i=0}^n\sum_{j=0} ...

  4. BZOJ 3798 分块打表

    思路: 这题思路真是奇妙 先跑个暴力 每隔1e5打个表 块内暴力 打表程序: (开O3 15秒就跑完了) //By SiriusRen #include <bits/stdc++.h> u ...

  5. bzoj 4513 [Sdoi2016]储能表

    题面 https://www.lydsy.com/JudgeOnline/problem.php?id=4513 题解 要求的式子 用数位dp的方法去做 我们把式子拆开 变成 $\sum_{i=0}^ ...

  6. BZOJ 4569 [Scoi2016]萌萌哒 | ST表 并查集

    传送门 BZOJ 4569 题解 ST表和并查集是我认为最优雅(其实是最好写--)的两个数据结构. 然鹅!他俩加一起的这道题,我却--没有做出来-- 咳咳. 正解是这样的: 类似ST表有\(\log ...

  7. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  8. BZOJ.4540.[HNOI2016]序列(莫队/前缀和/线段树 单调栈 RMQ)

    BZOJ 洛谷 ST表的一二维顺序一定要改过来. 改了就rank1了哈哈哈哈.自带小常数没办法. \(Description\) 给定长为\(n\)的序列\(A_i\).\(q\)次询问,每次给定\( ...

  9. BZOJ 5308 [ZJOI2018] Day2T2 胖 | 二分 ST表

    题目链接 LOJ 2529 BZOJ 5308 题解 这么简单的题 为什么考场上我完全想不清楚 = = 对于k个关键点中的每一个关键点\(a\),二分它能一度成为哪些点的最短路起点(显然这些点在一段包 ...

随机推荐

  1. 【LOJ】#2137. 「ZJOI2015」诸神眷顾的幻想乡

    我居然到了国赛之前才学习怎么做广义后缀自动机 这个题目--意思是--有20个叶子,肯定一条路径都是任意一个叶子为根,一个从某个点往祖先走的路径 这样的话我们可以按照dfs序,从每个节点的父亲那里的后缀 ...

  2. java访问磁盘文件

    转载,务必写上原文链接 !(尊重与你分享知识的人) 目录 文件 File 对象 VS FileDescriptor 对象 文件讲解java访问磁盘文件过程 fileReader.read() 图解ja ...

  3. 【规律】Farey Sums

    [参考博客]: https://blog.csdn.net/meopass/article/details/82952087 Farey Sums 题目描述 Given a positive inte ...

  4. Nginx学习笔记(一):Nginx 进程模型 / 事件处理模型

    Nginx 进程模型 ​​​​ 多进程模型 进程间相互独立,无需加锁,且互不影响: 一个进程退出了不影响其他的进程运行,降低风险: 当请求到来,多个 worker 通过竞争 accrpt_mutex ...

  5. 利用贝叶斯算法实现手写体识别(Python)

    在开始介绍之前,先了解贝叶斯理论知识 https://www.cnblogs.com/zhoulujun/p/8893393.html 简单来说就是:贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯 ...

  6. MySql翻页查询

    分页查询在网页中随处可见,那原理是什么呢?下面简单介绍一下基于MySql数据库的limit实现方法. 首先明确为什么要使用分页查询,因为数据庞大,查询不可能全部显示在页面上,如果全部显示在页面上,也会 ...

  7. CUDA 笔记

    名词解释 SM :Streaming Multiprocessor    而 Block 大致就是对应到 SM     所有的blocks 按照流水线被送到6个SM中进行计算 在 Compute Ca ...

  8. iOS 9.0中UIAlertController的用法。

    1.我为什么要写这篇博客记录它? 答:因为 UIAlertView和UIActionSheet 被划线了 苹果不推荐我们使用这两个类了,也不再进行维护和更新,为了以后方便使用我来记录一下.如图所示 正 ...

  9. [LeetCode] 15. 3Sum ☆☆☆(3数和为0)

    描述 Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Fi ...

  10. Scyther 形式化分析工具资料整理(三)

    1.作者Cas Cremers在做TLS1.3的时候我么发现并没有使用Scyther 形式化丰分析工具对其进行分析,而是使用了 The Tamarin .作者建立了TLS.13的模型. 那么我的目标是 ...