自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AK_HuangYC的博客

人一我十,人十我百

  • 博客(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 1786 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 672

原创 51nod 1393 0和1相等串 (连续区间)

给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等。Input一个字符串,只包含01,长度不超过1000000。Output一行一个整数,最长的0与1的个数相等的子串的长度。Input示例1011Output示例2思路:(1) 最简单的想法就是遍历所有的子串,之后判断该子串是否满足条

2015-10-31 13:19:22 1319

原创 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 1010

原创 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 512

原创 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 805

原创 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 967

原创 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 1313

原创 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 626

原创 51nod 1163 最高的奖励 (贪心+STL)

有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励。在结束时间之前完成该任务,就可以获得对应的奖励。完成每一个任务所需的时间都是1个单位时间。有时候完成所有任务是不可能的,因为时间上可能会有冲突,这需要你来取舍。求能够获得的最高奖励。Input第1行:一个数N,表示任务的数量(2 <= N <= 50000)第2 - N + 1行,每行2个数,中间用空格分隔,表

2015-10-29 21:02:02 826

原创 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 1152

原创 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 341

原创 线段树模板

#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 318

原创 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 911

原创 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 497

原创 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 606

原创 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 1273

原创 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 736

原创 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 1038

原创 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 632

原创 51nod 1279 扔盘子 (二分查找的变形)

有一口井,井的高度为N,每隔1个单位它的宽度有变化。现在从井口往下面扔圆盘,如果圆盘的宽度大于井在某个高度的宽度,则圆盘被卡住(恰好等于的话会下去)。盘子有几种命运:1、掉到井底。2、被卡住。3、落到别的盘子上方。盘子的高度也是单位高度。给定井的宽度和每个盘子的宽度,求最终落到井内的盘子数量。如图井和盘子信息如下:井:5 6 4 3 6 2 3盘子:2

2015-10-27 02:06:29 970

原创 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 864

原创 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 1718

原创 zufe 1931: 菜贩xiaoshua (set+map模拟题,好题)

Description      土老板种了很多菜,准备拿到市场上卖. 据土老板讲,现在卖菜比当程序员赚多了….. 于是xiaoshua又自告奋勇地去当起了菜贩. As we all know,土老板是个财大气粗的主儿, 他给xiaoshua分配了一个摊位,而这个摊位很特别, 呈直线型,且长度很长很长很长… 为了简化问题,我们可以把它理解成是无穷个大小相等的格子从左

2015-10-26 15:26:46 385

原创 zufe 1926: sailspark的奇怪癖好 (set的使用,好题 STL)

Description       Sail有一个奇怪的癖好,喜欢养奇怪的宠物,虽然在省长要来检查,学校严明禁止养宠物,但他还是孜孜不倦的在自己的衣柜里养了一种很神奇的宠物,就暂时叫它spark吧。       Spark算是一种物种,里面包含着很多个种类,sail想对不同种类的spark进行混养,来了解在混养的时候,spark是否会发生什么变异等。       Spark是一种很

2015-10-26 00:19:15 423

原创 zufe 1932: 语音识别 (模拟_有点烦)

Description       如果使用姓氏在数据库中查找一个人的名字,仅当你准确知道名字是如何拼写的时候才会成功. 不过,假设你正在运行一个航班预订系统, 并且需要在不知道精确的拼写时查找名字.你将需要一种方法, 基于名字的发言对他们进行编码.然后, 查找将输出具有类似读音的名字的表项.例如, 你将希望相同的查找可以发现Dickson和Dixon.      

2015-10-26 00:08:35 454

原创 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 573

原创 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 764

原创 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 482

原创 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 1720

原创 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 2147

原创 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 1903

原创 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 409

原创 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 832

原创 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 1821

原创 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 675

原创 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 821

原创 51nod 1181 质数中的质数(质数筛法)

如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。Input输入一个数N(N Output输出>=N的最小的质数中的质数。Input示例20Output示例31

2015-10-21 23:57:48 586

原创 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 1473

原创 51nod 1384 全排列 (回溯||STL)

给出一个字符串S(可能又重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列。例如:S = "1312",输出为:112311321213123113121321211321312311311231213211Input输入一个字符串S(S的长度 Output输出S所包含的字符组成的所有

2015-10-20 14:17:45 930

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除