CH Round #57 - Story of the OI Class 凯撒密码

  很有意思的一道题目

  考场上想的是HASH成一个整数,把末位asicc码值*1,依次乘*10,得到一个整数,然后利用等差性、唯一性快排Nlogn乱搞的

  证明如下:

    对于明文abcde

    密文 bcdef

    有(a-b)*10000+(b-c)*1000+(c-d)*100+(d-f)*10+(e-f)*1=一个常数

    这个常数我们可以预处理出来,对于任意的f[a,b],a,b属于小写字母,我们都可以预处理出来其值

    好吧就是这个考场上写挂了

    预处理出来之后依次排序维护标号然后O(n)一遍过就好,哎傻了

    CH Round #57 - Story of the OI Class

    不过最后又想了下,还是可以直接HASH嘛,HASH过去之后映射回来就行了。。

    

const maxn=600001;
        maxm=26;
        maxlen=5;

var n,t,i,j:longint;
      a,b:array [0..maxn] of longint;
      f:array [0..maxm,0..maxm] of longint;
      s:string;

begin
      readln(n);
      for i:=1 to maxm do
         for j:=1 to maxm do
          if j>=i then
           f[i,j]:=j-i else f[i,j]:=26-i+j; //hash求出定值
  for i:=1 to n do
    begin
      readln(s);
      t:=0;
      for j:=1 to maxlen-1 do
        t:=t*26+f[ord(s[j])-ord(‘a‘)+1][ord(s[j+1])-ord(‘a‘)+1];
      a[t]:=i; b[t]:=ord(s[1]); //维护标号
    end;
  for i:=1 to n do
    begin
      readln(s);
      t:=0;
      for j:=1 to maxlen-1 do
        t:=t*26+f[ord(s[j])-ord(‘a‘)+1][ord(s[j+1])-ord(‘a‘)+1];
      writeln(a[t],‘ ‘,f[ord(s[1])-ord(‘a‘)+1][ord(b[t])-ord(‘a‘)+1]);
    end;
end.   
时间: 2024-08-23 12:55:20

CH Round #57 - Story of the OI Class 凯撒密码的相关文章

【拓扑排序】【堆】CH Round #57 - Story of the OI Class 查错

拓扑排序,要让字典序最小,所以把栈改成堆. 1 #include<cstdio> 2 #include<queue> 3 #include<algorithm> 4 using namespace std; 5 #define N 100001 6 priority_queue<int,vector<int>,greater<int> >Q; 7 int n,m,x,y; 8 int v[N],first[N],next[N],en,

CH Round #45 能量释放

能量释放 CH Round #45 - alan有一些陷阱 III 题目描述 alan得到一块由个能量晶体构成的矿石,对于矿石中的每一个能量晶体,如果用化学物质刺激某一个能量晶体,就能使它释放能量. 它的能量释放强度与晶体本身的能量值以及能量晶体的位置有关. 为了方便研究,alan做了如下的定义. 能量集:一块矿石中的第个能量晶体到第个能量晶体(包含和,)构成的集合. 能量储存点:对于一块矿石中的能量晶体和,若有,则称是能量储存点. 能量释放点:在一个能量集中,若存在一个能量晶体,使得除它之外的

CH Round #17 舞动的夜晚

舞动的夜晚 CH Round #17 描述 L公司和H公司举办了一次联谊晚会.晚会上,L公司的N位员工和H公司的M位员工打算进行一场交际舞.在这些领导中,一些L公司的员工和H公司的员工之间是互相认识的,这样的认识关系一共有T对.舞会上,每位员工会尝试选择一名Ta认识的对方公司的员工作为舞伴,并且每位员工至多跳一支舞.完成的交际舞的数量越多,晚会的气氛就越热烈.顾及到晚会的气氛,员工们希望知道,哪些员工之间如果进行了交际舞,就会使整场晚会能够完成的交际舞的最大数量减小. 输入格式 第一行三个整数N

CH Round #52 还教室[线段树 方差]

还教室 CH Round #52 - Thinking Bear #1 (NOIP模拟赛) [引子]还记得 NOIP 2012 提高组 Day2 中的借教室吗?时光飞逝,光阴荏苒,两年过去了,曾经借教室的同学们纷纷归还自己当初租借的教室.请你来解决类似于借教室的另一个问题.[问题描述]在接受借教室请求的 n 天中,第 i 天剩余的教室为 a i 个.作为大学借教室服务的负责人,你需要完成如下三种操作共 m 次:① 第 l 天到第 r 天,每天被归还 d 个教室.② 询问第 l 天到第 r 天教室

CH Round #30 摆花[矩阵乘法]

摆花 CH Round #30 - 清明欢乐赛 背景及描述 艺术馆门前将摆出许多花,一共有n个位置排成一排,每个位置可以摆花也可以不摆花.有些花如果摆在相邻的位置(隔着一个空的位置不算相邻),就不好看了.假定每种花数量无限,求摆花的方案数. 输入格式 输入有1+m行,第一行有两个用空格隔开的正整数n.m,m表示花的种类数.接下来的m行,每行有m个字符1或0,若第i行第j列为1,则表示第i种花和第j种花不能排在相邻的位置,输入保证对称.(提示:同一种花可能不能排在相邻位置). 输出格式 输出只有一

【题解】CH Round #61 取数游戏

取数游戏 CH Round #61 - 「Adera 10」冬令营热身赛 描述 SJY和CYF在玩一个取数游戏.他们将1~n分别写在n张纸上,随机排成一排,约定SJY先取,只能取走最边上的两张纸之一,然后CYF取:以此循环下去,取到1的人获胜.假设SJY和CYF足够聪明,求SJY获胜的概率. 输入 一个整数n 输出 SJY获胜的概率,保留最简分数形式(若为1,则输出1/1:若为0,则输出0/1). 样例 样例输入1 2 样例输出1 1/1 样例输入2 3 样例输出2 2/3 数据范围与约定 40

Educational Codeforces Round 57 (Rated for Div. 2)

get人生第二场CF! 成绩:(exACM) rank858 AC3/7 Penalty57 rating1648(+52) 题目:Educational Codeforces Round 57 (Rated for Div. 2) 错题题解: D. Easy Problem E. The Top Scorer F. Inversion Expectation G. Lucky Tickets 原文地址:https://www.cnblogs.com/xht37/p/10198321.html

CH Round #56 - 国庆节欢乐赛解题报告

最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树,其中一些树上结有能够产生能量的魔力水果.已知每个水果的位置(Xi,Yi)以及它能提供的能量Ci.然而,魔幻森林在某些时候会发生变化:(1) 有两行树交换了位置.(2) 有两列树交换了位置.当然,树上结有的水果也跟随着树一起移动.不过,只有当两行(列)包含的魔力水果数都大于0,或者两行(列)都没有魔

CH Round #54 - Streaming #5 (NOIP模拟赛Day1)解题报告

最近参加了很多CH上的比赛呢~Rating--了..题目各种跪烂.各种膜拜大神OTZZZ T1珠 描述 萌蛋有n颗珠子,每一颗珠子都写有一个数字.萌蛋把它们用线串成了环.我们称一个数字串是有趣的,当且仅当它的第1位是2,且除了第1位以外的每一位都是3.例如,2,233,2333333都是有趣的数字串.现在,你可以从这串珠子的任意一颗开始读,沿着顺时针或逆时针方向,到任意一颗珠子停止.这样,你就可以读出一个数字串来.萌蛋想知道,所有能读出的有趣的数字串当中,最长的是哪一个数字串.当然,你也可能读不