青云的服务器密钥
来源:互联网 发布:阿里云 cdn 速度慢 编辑:程序博客网 时间:2024/04/28 05:37
青云的服务器密钥
青云给每台服务器设置了一个由小写字母a-z
组成的密钥。密钥的易破解程度定义如下:
对于密钥 S1..SnS_1..S_nS1..Sn,我们需要首先计算其对应的π\piπ 数组。对于任意的 i(2≤i≤n)i(2 \leq i \leq n)i(2≤i≤n),πi=max{L∣S1...SL=Si−L+1...Si,(0≤L<i)}\pi_i=max\{L|S_1...S_L=S_{i-L+1}...S_i, (0 \leq L < i)\}πi=max{L∣S1...SL=Si−L+1...Si,(0≤L<i)}。也就是最长的前缀等于后缀的长度。
则密钥的易破解程度为 ∑i=2nπi\sum_{i=2}^{n}\pi_i∑i=2nπi,值越小,易破解程度越高。
现在已知密钥的 S1...SnS_1...S_nS1...Sn 中每个小写字母的字符个数,小明想知道易破解程度最高是多少?
输入格式
第一行一个正整数 T(1≤T≤10)T (1 \leq T \leq 10)T(1≤T≤10) 表示数据的组数。每组数据一行,262626 个非负整数 cnti(0≤∑icnti≤50)cnt_i(0 \leq \sum_{i}cnt_i \leq 50)cnti(0≤∑icnti≤50),表示密钥中每个小写字母的个数。
输出格式
一共输出 TTT 行,每行一个整数,为每组输入对应的易破解程度最高的结果。
样例输入
12 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
样例输出
1
提示信息
abba
是一个符合输入的密钥,除了 π4=1\pi_4 = 1π4=1,其他都是000,因此∑i=2nπi=1\sum_{i=2}^{n}\pi_i=1∑i=2nπi=1。
题意:就是给定一个只含26个小写字母的序列,让你组合,使得它所有的πi值之和最小,其中πi的定义是在子序列1到i这段,在找到一个L的位置,使得以L为子序列的分界,从1正数开始L个与从i倒数L个的序列相同,L即为此时的πi值。
题目链接:青云的服务器密钥
解题思路:解题首先要看懂题目,刚开始连题目看了好久。分两种情况:
1.只有一种字母。
这时,当字母数cnt>=2,对应的π值应该为cnt-1,比如 “aaaaa",π1=0,π2=1(a,a),π3=2(aa,aa(中间重合了一个a)),π4=3(123,432(对应a的位置)),π2=4(aaaa,aaaa(表示的含义前面已经说了)),相加结果为10,
不难发现规律,就为一个以1为首项,cnt-1为尾项的等差数列和。
2.两种或者以上的字母。
想要让总和最小,那么肯定想办法让他子序列重合的部分越少,因为子序列比较的位置是从1开始(这点是固定的),那么我们就把某个字母安排在这,它同种类的其他字母安排到最后,那么前面不含这个字母的部分的π值都将为0,从开始出现这个字符,才有π值,且只能为1,因为后缀只能和1号位置的匹配,这样答案就应该是这个字母出现次数cnt-1。
代码:
- 青云的服务器密钥
- 青云的服务器密钥
- 2016 计蒜之道 初赛 第一场 青云的服务器密钥
- 2016计蒜之道初赛第一场----A青云的服务器密钥【贪心】
- [贪心] 2016 计蒜之道 初赛 第一场 A. 青云的服务器密钥
- 2016 计蒜之道 初赛 第一场 青云的服务器密钥
- 青云的弹性计算
- 青云笔试题的思路
- Linux系统的服务器远程密钥连接
- 青云的机房组网方案(简单)
- 计蒜客 青云的机房组网方案
- 计蒜客 青云的机房组网方案
- 【计蒜客11216】青云的网络设计方案 题解
- 数学家苏青云不为人知的故事
- 生成ssh服务器密钥
- 服务器密钥(openssl)
- 使用ssh密钥的方式连接linux服务器的注意事项
- 利用SecureCRT产生的密钥对连接SSH服务器
- C++中STL常用算法概要
- 合并两个有序链表,让结果ren仍然有序
- android中MVP模式
- BZOJ 2154 Crash的数字表格(sigma(lcm(i,j)),莫比乌斯反演)
- Object-Oriented Analysis and Design Using UML 翻译与学习 (序)
- 青云的服务器密钥
- java_包装类
- leetcode 191. Number of 1 Bits
- Displaying Bitmaps Efficiently总结
- Android手势识别——上下左右滑动、屏幕上下左右中区域处理
- 《Nodejs开发加密货币》之十七:共识机制,可编程的利益转移规则
- C++走向远洋——64(项目三、数组类模板)
- 《JavaScript学习笔记》:阻止默认行为
- 经典排序算法 - 快速排序Quick_sort