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. LC 206. Reverse Linked List

    题目描述 Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5-> ...

  2. spring 框架的核心总结

    最近在学习Java语言,从而也学习了SpringFramework 这个大名鼎鼎的框架.从而做一些的记录. 题外话: 学习过几种不同的语言,后来知道所有的编程语言里所有的概念翻来覆去都是一样的事物,只 ...

  3. Ubuntu16.04安装kubernetes1.13集群

    Ubuntu16.04安装kubernetes1.13集群 最新的安装可以使用以下方式:https://www.cnrancher.com/docs/rancher/v2.x/cn/overview/ ...

  4. 本地虚拟机NAT模式下怎么设置才可以访问外网

    记:因为我要在本机虚拟机上安装Docker,结果发现虚拟机环境不能上网,是主机模式.我要调成net模式下才可以访问外网,这就需要怎么设置.下面文章记录一下. 在本机安装VMware软件后,系统中会自动 ...

  5. 一、eureka服务端自动配置

    所有文章 https://www.cnblogs.com/lay2017/p/11908715.html 正文 @EnableEurekaServer开关 eureka是一个c/s架构的服务治理框架, ...

  6. 整理一下Promise 的用法

    Promise 的定义 Pormise是JS的异步编程的一种解决方案,在ES6将其写进了语言标准,提供了原生的Promise对象. Promise简单来理解就是一个容器,里面存放着某个未来才会结束的事 ...

  7. html 输入框ios苹果手机显示九宫格数字键盘

    只需要在input标签加上type=‘tel’  即可

  8. Java架构师告诉你Spring IoC有什么好处呢

    前言: 这个问题也一直困惑我很久,毕竟其他语言没有IOC也活的很好. 但是Spring在当时能够一统江湖,跟IOC真的有很大的关系. 在没有IOC的时代,New代表一切,女朋友都是可以New出来的. ...

  9. Computer Vision_33_SIFT:Distinctive Image Features from Scale-Invariant Keypoints——2004

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  10. Computer Vision_33_SIFT:Object recognition from local scale-invariant features——1999

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...