1.题目描述:点击打开链接
2.解题思路:本题是一道模拟题,虽然看上去像数学,但实际上只需要模拟一下这个过程就好了。首先,我们先让h1变为a1,设需要k1步才可以,如果h2经过k1步也变为a2,那么直接输出答案。否则,我们接下来找h1变化的循环节cycle,即每经过一个cycle,就可以再到达a1。那么我们看h2需要几个cycle才可以从当前位置(即第k1步时候的位置)到达a2,假设只需要k2步...
分类:
其他好文 时间:
2015-05-28 21:36:42
阅读次数:
196
A. Mike and Frog
枚举。
先是找循环,然后很容易得出一个两元一次方程,然后可以发现解也是有循环节的,所以最小的那个肯定出现在一定范围内,否则就后面也不可能出现。假设两个变量为x,y,系数分别为z1,z2。很显然,两者的最小公倍数便是一个周期,所以如果枚举x的话,只需要枚举到z2就可以了。
细节比较多。。错了好多次。。比赛中也跪了。。
代码如下:#include <iostre...
分类:
其他好文 时间:
2015-05-28 02:01:39
阅读次数:
145
链接 :
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1620
题意 : 给一个字符串 问怎么压缩字符串使得最终个数最小 具体怎么压缩请参照图示 很好明白。
题目就是需要找到 对于每个后缀 看成一个新字符串 找出它的前缀的最小循环节。
过程和大白书 P213页 是一样的,只需要对每个后缀跑一遍KMP求出周期。
剩下的...
分类:
其他好文 时间:
2015-05-18 01:09:54
阅读次数:
146
换种思考角度在符合数字排列组合的情况下,观察数字是否为n的倍数。于是从小到大查找,通过bfs状态转换。循环节为n。表达困难,还请看代码#include #include #include #include #include #include #include #include #include #i...
分类:
其他好文 时间:
2015-05-16 11:45:02
阅读次数:
120
题目链接:
Hashing-Hard Version
解题思路:
暴力,首先根据题目要求将所有给出节点按字典序(从小到大)排列
循环S(节点总数)次,每次通过遍历数组找到一个未出现过的,且满足条件:只能出现在现有位置上(本可出现在之前位置,但被其他节点占据)的节点
输出节点的值 并标记为出现过即可得到答案
代码:
#includ...
分类:
其他好文 时间:
2015-05-12 17:15:40
阅读次数:
181
Polya定理应用:
题意:给出一个置换B,问有没有一个置换A,使得A^2=B。
思路:对于置换的循环节,比如(a1,a2,a3)和(b1,b2,b3,b4),那么对于奇数长度的循环节,发现进行两次乘法以后还是奇数长度,偶数长度的循环节分解为两个长度相同的循环节。那么就可以对B中的循环节进行判断,奇数长度的不同管,这个总能找到满足要求的,偶数循环节的数量也要是偶数,这样才能两两配...
分类:
其他好文 时间:
2015-05-06 22:58:24
阅读次数:
159
题意:输入整数a和b,输出a/b的循环小数以及循环节的长度学习的这一篇http://blog.csdn.net/mobius_strip/article/details/39870555因为n%m的余数只可能是0到m-1中的一个,根据抽屉原理,当计算m+1次时至少存在一个余数相同发现看了题解理解起来...
分类:
其他好文 时间:
2015-05-04 21:58:39
阅读次数:
125
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位。
代码如下
import java.util.Vector;
/**
*
* @author Administrator
* 类名:Main
* 创建时间:2015-5-1
* vesion1.0
*/
pub...
分类:
编程语言 时间:
2015-05-01 00:38:57
阅读次数:
416
题目:给你一个分数的分子和分母,求出他的循环节。
分析:模拟。根据鸽巢原理,设分母为m则计算中最多有m中不同的余数,所以循环节小于m。
说明:每次记录余数*10在取新的余数即可。
#include
#include
#include
#include
#include
#include
using namespace std;
int n,m;
int save[1001];...
分类:
其他好文 时间:
2015-04-29 08:41:42
阅读次数:
150
找重复次数最多的字串,如果有多解,要求字典序最小。我也是跟着罗穗骞菊苣的论文才刷这道题的。首先还是枚举一个循环节的长度L,如果它出现两次的话,一定会包含s[0], s[L], s[2L]这些相邻两个之间。然后枚举相邻的两个,尽可能的向前和向后延伸,假设延伸长度为k,则重复次数为k / L + 1向后...
分类:
编程语言 时间:
2015-04-23 22:55:03
阅读次数:
184