CF Round#17
来源:互联网 发布:基于栈的列表 java 编辑:程序博客网 时间:2024/05/17 08:45
这套题是tourist出的,难度挺大。题解吗,tourist写得很详细了,我就大概写一下要点好了。
tourist的题解 http://codeforces.com/blog/entry/451
A,B水题
C 题目大意:对字符串定义一种操作,对于两个相邻的字符,令其值相等,即用后者的值取代前者先前的值,或者用前者的值取代后者先前的值。
定义平衡串,令|x|表示字符x在串中出现的次数,则若对于任意的字符a,b满足-1<=|a|-|b|<=1,该字符串则为平衡串。
对于一个给定长度的仅含’a’,’b’,’c’三种字符的字符串,求通过上述操作能得到多少个平衡串。
对于字符串S,用S’表示其的压缩串,压缩串即为将原字符串连续的相同字符压缩成单个字符后的串,比如,字符串aabbcc的压缩串为abc。
字符串A在操作后能变成B,则有事实:B’一定为A’的一个子序列。反之亦然。
则做法就是通过根据B’是A’子序列,通过A’构造B。
令状态F[I][A][B][C]表示,构造到了A’的第I个元素,|a|,|b|,|c|分别等于A,B,C。时构造出的B的数目。定义nxt[i][x] =min{j | j >= i && s[j] = x},即要添加字符x,需要到的下一个位置。
若添加字符’a’,则F[I][A][B][C]能转移到F[ nxt[i][ ‘a’ ]][A+1][B][C]。
添加’b’, ’c’与之类似。
在求每个状态的时候判断一下能否满足平衡条件,统计答案即可。
D 题目要点:给定两个大数A和B以及一个32位数C求出AB mod C
数论题,单说一下要用到的知识,欧拉定理,以及剩余系。
E 大意:求出一个给定字符串中,有共同元素的回文子串对的个数。
首先用求最长回文子串的线性算法。然后根据其辅助数组求得开始于一点的回文子串的数组start,以及结束于一点的回文子串的数组finish。
根据这两个数组可以求出不相交的对数,然后从总对数中减去即可。
- CF Round#17
- CF round#302-2 B (13.10.17)
- cf round 200->round 200
- CF Round#2
- CF Round#5
- CF Round#8
- CF Round#10
- CF Round#11
- CF Round#14
- CF Round#167
- CF Round#168
- CF Round#169
- CF Round 192
- CF round#205 D
- CF round 235
- CF round 236 div1
- CF Round#240题解
- CF round 259
- java annotation
- POJ_1573题解
- chrome学习
- SSL证书
- using vector to implement buffer
- CF Round#17
- 对成功游戏的看法
- 25.写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
- 26.左旋转字符串
- 有关Java内存溢出及内存消耗的小知识
- JPA 无法加载独立JAR包中实体映射文件 unkonwn entity
- 【转】分享我的大型Java多用户商城系统开发的心得和困难
- [转载]聊聊并发(四)——深入分析ConcurrentHashMap
- 远程执行小工具