- 博客(83)
- 收藏
- 关注
原创 51nod 巨大的斐波那契数列(矩阵快速幂),递推式优化的好模板!!!!!!!
斐波那契数列的定义如下:F(0) = 0F(1) = 1F(n) = F(n - 1) + F(n - 2) (n >= 2)(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ...)给出n,求F(n),由于结果很大,输出F(n) % 1000000009的结果即可。Input
2015-10-24 16:12:20 1799 1
原创 1040 最大公约数之和 (STL)
给出一个n,求1-n这n个数,同n的最大公约数的和。比如:n = 61,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15Input1个数N(N Output公约数之和Input示例6Output示例15#includeusing namespace std;vect
2015-10-31 17:19:33 696
原创 51nod 1393 0和1相等串 (连续区间)
给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等。Input一个字符串,只包含01,长度不超过1000000。Output一行一个整数,最长的0与1的个数相等的子串的长度。Input示例1011Output示例2思路:(1) 最简单的想法就是遍历所有的子串,之后判断该子串是否满足条
2015-10-31 13:19:22 1392
原创 51nod 1127 最短的包含字符串 (滑动窗口)
给出一个字符串,求该字符串的一个子串S,S包含A-Z中的全部字母,并且S是所有符合条件的子串中最短的,输出S的长度。如果给出的字符串中并不包括A-Z中的全部字母,则输出No Solution。Input第1行,1个字符串。字符串的长度 Output输出包含A-Z的最短子串长度。如果没有符合条件的子串,则输出No Solution。Input示例
2015-10-31 10:39:16 1023
原创 51nod 1095 Anigram单词 (map——multiset结合)
一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram。现在给定一个字典,输入Q个单词,从给出的字典中找出这些单词的Anigram。Input第1行:1个数N,表示字典中单词的数量。(1 <= N <= 10000)第2 - N + 1行,字典中的单词,单词长度 <= 10。第N
2015-10-30 15:59:29 552
原创 51nod 1069 Nim游戏 (博弈论)
有N堆石子。A B两个人轮流拿,A先拿。每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N及每堆石子的数量,问最后谁能赢得比赛。例如:3堆石子,每堆1颗。A拿1颗,B拿1颗,此时还剩1堆,所以A可以拿到最后1颗石子。Input第1行:一个数N,表示有N堆石子。(1 <= N <
2015-10-30 14:26:57 823
原创 51nod 1101 换零钱 (0-1背包,DP)
1101 换零钱基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元。例如:5分钱换为零钱,有以下4种换法:1、5个1分2、1个2分3个1分3、2个2分1个1分4、1
2015-10-30 14:02:04 983
原创 51nod 1089 最长回文子串 V2 (Manacher算法)
回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。输入一个字符串Str,输出Str里最长回文子串的长度。Input输入Str(Str的长度 Output输出最长回文子串的长度L。Input示例daabaacOutput示例5 这里,我介绍一下O(n)回文串处理的一种方
2015-10-30 10:11:40 1325
原创 51nod 1413 权势二进制 (数学题)
一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成。例如0,1,101,110011都是权势二进制而2,12,900不是。当给定一个n的时候,计算一下最少要多少个权势二进制相加才能得到n。Input单组测试数据。第一行给出一个整数n (1Output输出答案占一行。Input示例9Output示例9
2015-10-29 22:48:11 636
原创 51nod 1163 最高的奖励 (贪心+STL)
有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励。在结束时间之前完成该任务,就可以获得对应的奖励。完成每一个任务所需的时间都是1个单位时间。有时候完成所有任务是不可能的,因为时间上可能会有冲突,这需要你来取舍。求能够获得的最高奖励。Input第1行:一个数N,表示任务的数量(2 <= N <= 50000)第2 - N + 1行,每行2个数,中间用空格分隔,表
2015-10-29 21:02:02 836
原创 51nod 1240 莫比乌斯函数
莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出。梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号。(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数)。具体定义如下:如果一个数包含平方因子,那么miu(n) = 0。例如:miu(4), miu(12), miu(18) = 0。如果一个数不包含平方因子,并且有k个不同的质因子,那么miu
2015-10-29 19:07:07 1173
原创 51nod 1264 线段相交 (模板)
算法1: [cpp] view plaincopy///----------alg 1------------ struct Point { double x, y; }; bool between(double a, double X0, double X1) {
2015-10-29 18:15:45 348
原创 线段树模板
#include#include#includeusing namespace std;#define maxn 10010#define max(a,b) a>b?a:bstruct Point { int L,R,mav;}Node[maxn<<2];int a[maxn];void Build(int L,int R,int p){ Node[p].L=L;
2015-10-29 17:12:02 331
原创 51nod 1126 求递推序列的第N项 (矩阵快速幂)
有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.给出A,B和N,求f(n)的值。Input输入3个数:A,B,N。数字之间用空格分割。(-10000 Output输出f(n)的值。Input示例3 -1 5Output示例6
2015-10-28 17:11:08 923
原创 51nod 1242 斐波那契数列的第N项 (矩阵快速幂)
斐波那契数列的定义如下:F(0) = 0F(1) = 1F(n) = F(n - 1) + F(n - 2) (n >= 2)(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ...)给出n,求F(n),由于结果很大,输出F(n) % 1000000009的结果即可。Input
2015-10-28 17:08:22 509
原创 51nod 1256 乘法逆元 (模板)
给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。Input输入2个数M, N中间用空格分隔(1 Output输出一个数K,满足0 Input示例2 3Output示例2#includeusing namespa
2015-10-27 23:59:37 623
原创 51nod 1305 Pairwise Sum and Divide (数学)
有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:fun(A) sum = 0 for i = 1 to A.length for j = i+1 to A.length sum = sum + Floor((A[i]+A[j])/(A[i]*A[j])) return sum
2015-10-27 23:33:41 1289
原创 51nod 1096 距离之和最小 (找规律题)
X轴上有N个点,求X轴上一点使它到这N个点的距离之和最小,输出这个最小的距离之和。Input第1行:点的数量N。(2 <= N <= 10000)第2 - N + 1行:点的位置。(-10^9 Output输出最小距离之和Input示例5-1-3079Output示例20位于N点中间的那个点到这N个
2015-10-27 22:46:52 756
原创 51nod 1068 Bash游戏 V3 (找规律)
有一堆石子共有N个。A B两个人轮流拿,A先拿。每次拿的数量只能是2的正整数次幂,比如(1,2,4,8,16....),拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N,问最后谁能赢得比赛。例如N = 3。A只能拿1颗或2颗,所以B可以拿到最后1颗石子。(输入的N可能为大数)Input第1行:一个数T,表示后面用作输入测试的
2015-10-27 12:05:25 1051
原创 51nod 1062 序列中最大的数 (打表,连续区间问题)
有这样一个序列a:a[0] = 0a[1] = 1a[2i] = a[i]a[2i+1] = a[i] + a[i+1]输入一个数N,求a[0] - a[n]中最大的数。a[0] = 0, a[1] = 1, a[2] = 1, a[3] = 2, a[4] = 1, a[5] = 3, a[6] = 2, a[7] = 3, a[8] = 1, a[9] = 4,
2015-10-27 11:42:55 638
原创 51nod 1279 扔盘子 (二分查找的变形)
有一口井,井的高度为N,每隔1个单位它的宽度有变化。现在从井口往下面扔圆盘,如果圆盘的宽度大于井在某个高度的宽度,则圆盘被卡住(恰好等于的话会下去)。盘子有几种命运:1、掉到井底。2、被卡住。3、落到别的盘子上方。盘子的高度也是单位高度。给定井的宽度和每个盘子的宽度,求最终落到井内的盘子数量。如图井和盘子信息如下:井:5 6 4 3 6 2 3盘子:2
2015-10-27 02:06:29 995
原创 51nod 1117 聪明的木匠 (优先队列_STL)
一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,木匠可以有多种切法,如:先将12切成3+9.,花费12体力,再将9切成4+5,花费9体力,一共花费21体力;还可以先将12切成4+8,花费
2015-10-26 23:51:11 884
原创 51nod 1010 只包含因子2 3 5的数 (打表+二分)
K的因子中只包含2 3 5。满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15。所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数。例如:n = 13,S中 >= 13的最小的数是15,所以输出15。Input第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)第2 - T
2015-10-26 21:05:01 1732
原创 zufe 1931: 菜贩xiaoshua (set+map模拟题,好题)
Description 土老板种了很多菜,准备拿到市场上卖. 据土老板讲,现在卖菜比当程序员赚多了….. 于是xiaoshua又自告奋勇地去当起了菜贩. As we all know,土老板是个财大气粗的主儿, 他给xiaoshua分配了一个摊位,而这个摊位很特别, 呈直线型,且长度很长很长很长… 为了简化问题,我们可以把它理解成是无穷个大小相等的格子从左
2015-10-26 15:26:46 393
原创 zufe 1926: sailspark的奇怪癖好 (set的使用,好题 STL)
Description Sail有一个奇怪的癖好,喜欢养奇怪的宠物,虽然在省长要来检查,学校严明禁止养宠物,但他还是孜孜不倦的在自己的衣柜里养了一种很神奇的宠物,就暂时叫它spark吧。 Spark算是一种物种,里面包含着很多个种类,sail想对不同种类的spark进行混养,来了解在混养的时候,spark是否会发生什么变异等。 Spark是一种很
2015-10-26 00:19:15 465
原创 zufe 1932: 语音识别 (模拟_有点烦)
Description 如果使用姓氏在数据库中查找一个人的名字,仅当你准确知道名字是如何拼写的时候才会成功. 不过,假设你正在运行一个航班预订系统, 并且需要在不知道精确的拼写时查找名字.你将需要一种方法, 基于名字的发言对他们进行编码.然后, 查找将输出具有类似读音的名字的表项.例如, 你将希望相同的查找可以发现Dickson和Dixon.
2015-10-26 00:08:35 462
原创 51nod 1094 和为k的连续区间 (暴力||map数组优化)
一整数数列a1, a2, ... , an(有正有负),以及另一个整数k,求一个区间[i, j],(1 <= i <= j <= n),使得a[i] + ... + a[j] = k。Input第1行:2个数N,K。N为数列的长度。K为需要求的和。(2 <= N <= 10000,-10^9 <= K <= 10^9)第2 - N + 1行:A[i](-10^9
2015-10-25 16:28:51 585
原创 51nod 1067 Bash游戏 V2 (博弈论_找规律)
有一堆石子共有N个。A B两个人轮流拿,A先拿。每次只能拿1,3,4颗,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N,问最后谁能赢得比赛。例如N = 2。A只能拿1颗,所以B可以拿到最后1颗石子。Input第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)第2 - T + 1行:每行1个数
2015-10-25 14:47:15 777
原创 51nod 1066 Bash游戏 (博弈论)
(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走
2015-10-25 14:44:24 499
原创 51nod 1118 机器人走方格 (排列组合+乘法逆元!!!)
M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。Input第1行,2个数M,N,中间用空格隔开。(2 Output输出走法的数量。Input示例2 3Output示例3以前一直在用逆元,没想到今天用模板卡了,还
2015-10-25 11:12:32 1747
原创 51nod 1013 3的幂的和(等比数列求和_快速幂+逆元)
求:3^0 + 3^1 +...+ 3^(N) mod 1000000007Input输入一个数N(0 Output输出:计算结果Input示例3Output示例40关于逆元的一些知识点:若对于数字A,C 存在X,使A * X = 1 (mod C) ,那么称X为 A 对C的乘法逆元。逆元的
2015-10-25 10:02:42 2180
原创 51nod 1082 与7无关的数 (打表)
一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数。求所有小于等于N的与7无关的正整数的平方和。例如:N = 8,Input第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000)第2 - T + 1行:每行1个数N。(1 Output共T行,每行一个数,对应T个测试的计
2015-10-24 17:29:05 1912
原创 51nod 石子归并 (dp)
时限:1000ms 内存限制:10000K 总时限:3000ms描述:在一个圆形操场的四周摆放着n堆石子(n编一程序,读入石子堆数n及每堆的石子数(比如有4堆石子:4 4 5 9 则最佳合并方案如下:4 4 5 9 score: 08 5 9 score: 813 9 score: 8 + 13 = 2122 s
2015-10-24 12:38:33 419
原创 51nod 1212 无向图最小生成树 (Kruskal)
N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树。Input第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量。(2 <= N <= 1000, 1 <= M <= 50000)第2 - M + 1行:每行3个数S E W,分别表示M条边的2个顶点及权值。(1 Output输出最小生成树的所有边的权值之和。Input示
2015-10-24 10:58:01 852
原创 51nod 1079 中国剩余定理 (模板)
一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K。例如,K % 2 = 1, K % 3 = 2, K % 5 = 3。符合条件的最小的K = 23。Input第1行:1个数N表示后面输入的质数及模的数量。(2 <= N <= 10)第2 - N + 1行,每行2个数P和M,中间用空格分隔,P是质数,M是K % P的结果。(2 Outpu
2015-10-24 10:16:55 1857
原创 51nod 1138 连续整数的和 (数学公式_转换思想,好题吧)
给出一个正整数N,将N写为若干个连续数字和的形式(长度 >= 2)。例如N = 15,可以写为1 + 2 + 3 + 4 + 5,也可以写为4 + 5 + 6,或7 + 8。如果不能写为若干个连续整数的和,则输出No Solution。Input输入1个数N(3 Output输出连续整数中的第1个数,如果有多个按照递增序排列,如果不能分解为若干个连续整数
2015-10-22 01:47:07 688
原创 51nod 1284 2 3 5 7的倍数(容斥原理)
给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。Input输入1个数N(1 Output输出不是2 3 5 7的倍数的数共有多少。Input示例10Output示例1#include#include#includeusing namespace
2015-10-22 00:01:53 841
原创 51nod 1181 质数中的质数(质数筛法)
如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。Input输入一个数N(N Output输出>=N的最小的质数中的质数。Input示例20Output示例31
2015-10-21 23:57:48 601
原创 51nod 1031 骨牌覆盖 (找规律题_数学)
在2*N的一个长方形方格中,用一个1*2的骨牌排满方格。问有多少种不同的排列方法。例如:2 * 3的方格,共有3种不同的排法。(由于方案的数量巨大,只输出 Mod 10^9 + 7 的结果)Input输入N(N Output输出数量 Mod 10^9 + 7Input示例3Output示例3
2015-10-21 20:49:23 1489
原创 51nod 1384 全排列 (回溯||STL)
给出一个字符串S(可能又重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列。例如:S = "1312",输出为:112311321213123113121321211321312311311231213211Input输入一个字符串S(S的长度 Output输出S所包含的字符组成的所有
2015-10-20 14:17:45 943
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人