摘要: 题意:有一个递推式f(x) 当 x < 10 f(x) = x.当 x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10) 同时ai(0<=i<=9) 不是 0 就是 1; 现在给你 ai 的数字,以及k和 阅读全文
posted @ 2017-04-03 15:50 simpleknight 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个n,输出Fibonacci (n)%10000的结果 思路:裸矩阵快速幂乘,直接套模板 代码: 阅读全文
posted @ 2017-04-02 19:50 simpleknight 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个置换P,问是否存在一个置换M,使M^2=P 思路:资料参考 《置换群快速幂运算研究与探讨》 https://wenku.baidu.com/view/0bff6b1c6bd97f192279e9fb.html 结论一: 一个长度为 l 的循环 T,l 是 k 的倍数,则 T^k 是 k 阅读全文
posted @ 2017-03-30 18:10 simpleknight 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个数列,第i号位置的数位a[i],现在将数列进行交换,交换规则为a[i]=a[a[i]];已知交换s次之后的序列,求原先序列 思路:置换的问题必然存在一个循环节,使一个数列交换n次回到原来的数列上,我们只需要模拟交换找到循环节长度len,将已知的交换后的序列,则再进行 (len - s% 阅读全文
posted @ 2017-03-30 13:23 simpleknight 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一堆无序的数列p,求k,使得p^k=p 思路:利用置换的性质,先找出所有的循环,然后循环中元素的个数的lcm就是答案 代码: 阅读全文
posted @ 2017-03-29 19:48 simpleknight 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个无序数列,让你两两交换将其排成一个非递减的序列,每次交换的花费交换的两个数之和,问你最小的花费 思路:首先了解一下什么是置换,置换即定义S = {1,...,n}到其自身的一个双射函数f。那么我们将其写为若干个不相交的循环的乘积形式(A1, A2, ... Ap1)(B1, B2, . 阅读全文
posted @ 2017-03-28 18:29 simpleknight 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 题意:有一颗二叉树,深度为D,所有节点从上到下从左到右编号为1,2,3.....在结点一处放一个小球,每个节点是一个开关,初始全是关闭的,小球从顶点落下,小球每次经过开关就会把它的状态置反,现在问第k个球下落到D层时经过的开关编号 思路:lrj大哥的书上第一种方法是模拟,但是还是有要知道的知识点,对 阅读全文
posted @ 2017-03-27 18:35 simpleknight 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题意:如果1认识2,2认识3,必须要求有:1认识3.如果满足上述条件,输出YES,否则输出NO. 思路:显然如果是一个完全图就输出YES,否则就输出NO,如果是无向完全图则一定有我们可以用dfs来书边和点 n个节点的有向完全图边数为e=n*(n-1) 代码: 阅读全文
posted @ 2017-03-25 21:35 simpleknight 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一堆汉诺塔的盘子,设内半径为a,设外半径为b,高度为h,如果bj ≤ bi 同时bj > ai 我们就认为i盘子能落在在j盘子上,问你最高能落多高 思路:一看题意我们就能想到贪心,首先我们对这些圆盘先按照b从大到小排序,如果b相同,那么就要按照a从大到小排序,其实落汉诺塔的过程就像在栈一样 阅读全文
posted @ 2017-03-24 21:55 simpleknight 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个矩阵开始全是0,然后给你两种指令,第一种:C x1,y1,x2,y2 就是将左上角为x1,y1,右下角为x2,y2,的这个矩阵内的数字全部翻转,0变1,1变0 第二种:Q x1 y1,输出举证x1,y1,位置的数值 思路:该题的巧妙之处是反转的重叠抵消,记住要向上统计,向下修改;二维情 阅读全文
posted @ 2017-03-24 18:52 simpleknight 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个由'('和')'组成的字符串,问你有多少个子串,前半部分是由'('组成后半部分由')'组成 思路:枚举这个字符串中的所有'('左括号,它左边的所有'('左括号的个数为num1,它的右边的所有’)'右括号的个数为num2, 根据范德蒙恒等式计算得出 代码: 阅读全文
posted @ 2017-03-23 13:16 simpleknight 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 题意:有一个小朋友,即喜欢下象棋,还喜欢编程,于是他打算上这两种课的兴趣班,这两种课有着不同的上课时间,他想让两堂课之间的休息时间最多,问最大时间是多少 思路:看到这道题的第一反应就是贪心,于是用结构体排个序然后再暴力枚举....果断超时了,其实只要找两个区间差最远的就可以了 代码: 阅读全文
posted @ 2017-03-21 16:26 simpleknight 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n行m列的数组,和k次的询问,问从l行到r行是否存在一个非递增的列 思路:看到这道题的数据量我们就知道直接暴力不可取,所以我们采用了预处理的方法,我们记录下来每一行的最长的非递减的列的开头的哪个行,比如num[i]=k;表示到第i行的最长的非递减的列是从第k行开始的,在每一次的询问中我们只 阅读全文
posted @ 2017-03-19 15:50 simpleknight 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 题意: 有一道分值为sa的题,n个人比赛写这道题,按照递减的顺序给出每个人的当前分数,和每个人写不出这道题的概率,让你输出有反超现象出现的期望 思路:由于之前把题目翻译错了导致很久没有相通,后来看了别人的博客和代码才理解了这道题 http://blog.csdn.net/richie_ll/arti 阅读全文
posted @ 2017-03-18 21:14 simpleknight 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 题意:有N个数,Alice 和 Bob 轮流对这些数进行操作,若一个数 n=a*b且a>1,b>1,可以将该数变成 a 和 b 两个数; 或者可以减少为a或b,Alice先,问谁能赢 思路:首先单看对每个数进行除法的操作,我们可以知道其实是在除以每个数的素因子或素因子之间的积 比如 70=2*5*7 阅读全文
posted @ 2016-12-14 19:43 simpleknight 阅读(348) 评论(0) 推荐(0) 编辑