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. python3 字符集的应用

    python3的字符集测试 s_test=u"严" print(s_test.encode('gbk')) print([s_test]) #print(s_test[]) #pr ...

  2. C 循环统计输入的单词个数和字符长度

    C 循环统计输入的单词个数和字符长度 #include <stdio.h> #include <Windows.h> int main(void) { ]; ; ; print ...

  3. 1263: 你会做蛋糕吗?(Java)

    WUSTOJ 1263: 你会做蛋糕吗? 参考博客 Mitsuha_的博客 Description BobLee是个大吃货,喜欢吃好吃的,也喜欢做好吃的.比如做正方形的蛋糕.比如下图这个5*5的蛋糕. ...

  4. I2C初始化结构体详解

    typedef struct { uint32_t I2C_ClockSpeed; /*设置SCL时钟频,此值不低于40000*/ uint16_t I2C_Mode; /* 指定工作模式,可选I2C ...

  5. JVM GC 算法原理(转)

    出处: https://mp.weixin.qq.com/s/IfUFuwn8dsvMIhTS3V01FA 对于JVM的垃圾收集(GC),这是一个作为Java开发者必须了解的内容,那么,我们需要去了解 ...

  6. odoo——日历的一对多与多对一

    # model文件 # -*- coding: utf-8 -*- from odoo import api, fields, models class TodoTestYear(models.Mod ...

  7. Comet OJ - Contest #5 迫真图论 (图分块)

    大意: 给定无向图, 点$i$点权$b_i$, 边$(x,y,z)$对序列贡献是把$A[b_x \oplus b_y]$加上$z$. 多组询问, 一共三种操作: 1. 修改点权. 2.修改边权. 3. ...

  8. (六)Redis之数据结构之sorted-set

    一.常用方法 Sorted-Set和Set的区别 Sorted-Set中的成员在集合中的位置是有序的 添加元素 获得元素 删除元素 范围查询 1和2和3和4 添加/获得/删除元素/范围查询 packa ...

  9. SQL 不同服务器数据库操作

    https://www.cnblogs.com/lusunqing/p/3660190.html --创建远程链接服务器 execute sys.sp_addlinkedserver @server= ...

  10. ipp 实现图像空间的转换

    下载:https://software.intel.com/en-us/parallel-studio-xe/choose-download/free-trial-cluster-windows-c- ...