随笔分类 -  ACM

HDU解题报告
摘要:—11)哥德巴赫猜想: —一个大于等于4的偶数可以拆分为两个质数的和(用10e6内的数据测试一下):#include<iostream>using namespace std;#include<conio.h>#define M 1000000int p[M];bool is_prime(int n){ if(n<=1)return false; else for(int i=2;i*i<=n;i++) if(n%i==0)return false; return true;}int main(){ int n,i,j,k=0; for(i=2;... 阅读全文
posted @ 2012-04-20 13:25 龙杉老师
摘要:将一个整数n分解成x个正整数(a1+a2+a3+...+ax=n),使它们的乘积(a1*a2*a3*...*ax)最大。答案可能很大,输出对m取模后的结果。—思路一:动态规划(DP)—可以很容的思考出来动态转移方程—用dp[i]代表当n=i的时候的最大乘积,于是:—DP[i]=max(DP[i-j]*DP[j])—动态规划的方法虽然可以解决该类问题,但是当n的值非常大的时候,dp数组都很难开的下,故不管是时间复杂度还是空间复杂度都高得惊人!——于是需要新的思路。—思路二:—按照我们数学直觉,应该不难想到,分出来的这些a1,a2,a3…应该要相等才能让他们的积最大。—/*小学的时候大家应该学过同 阅读全文
posted @ 2012-04-20 10:56 龙杉老师
摘要:—对于一个B进制的数,只需要对其取以B的对数就可以得到他在B进制情况下的位数(取了对数之后可能为小数,所以还需要取整后再+1) —N!的位数就是[lg(N!)]+1=[lg(1)+lg(2)+…+lg(N)]+1 —=(int)ceil[(n*ln(n)-n+0.5*ln(2*n*π))/ln(10)]/*ceil是向上取整,[]符号为取整*/ —最后一个式子被称为斯特林公式例如:#include <iostream>using namespace std;#define pi 3.141592657#include<math.h>int main(){ int n; 阅读全文
posted @ 2012-04-19 23:55 龙杉老师
摘要:—分解素因子(数论) —Description —假设x是一个正整数,它的值不超过65535( 1< x <=65535 ),请编写一个程序,将x分解为若干个素数的乘积。 —Input —输入的第一行含一个正整数k (1 <= k <= 65535 ),表示测试例的个数,后面紧接着k行,每行对应一个测试例,包含一个正整数x。—Output —每个测试例对应一行输出,输出x的素数乘积表示式,式中的素数从小到大排列,两个素数之间用“*”表示乘法。 —Sample Input —2 11 9828 —Sample Output —11 2*2*3*3*3*7*13解:#inc 阅读全文
posted @ 2012-04-19 22:20 龙杉老师
摘要:Big Event in HDUProblem DescriptionNowadays, we all know that Computer College is the biggest department in HDU. But, maybe you don't know that Computer College had ever been split into Computer College and Software College in 2002.The splitting is absolutely a big event in HDU! At the same time 阅读全文
posted @ 2012-04-18 22:00 龙杉老师
摘要:Holding Bin-Laden Captive!We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But recently, it is reported that he hides in Hang Zhou of China!“Oh, God! How terrible! ”Don’t be so afraid, guys. Although he hides in a cave of Hang Zhou, he dares not to go out. 阅读全文
posted @ 2012-04-18 19:20 龙杉老师
摘要:Square CoinsProblem DescriptionPeople in Silverland use square coins. Not only they have square shapes but also their values are square numbers. Coins with values of all square numbers up to 289 (=17^2), i.e., 1-credit coins, 4-credit coins, 9-credit coins, ..., and 289-credit coins, are available i 阅读全文
posted @ 2012-04-18 15:53 龙杉老师
摘要:排列组合Problem Description有n种物品,并且知道每种物品的数量。要求从中选出m件物品的排列数。例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB","BA"两种。Input每组输入数据有两行,第一行是二个数n,m(1<=m,n<=10),表示物品数,第二行有n个数,分别表示这n件物品的数量。Output对应每组数据输出排列数。(任何运算不会超出2^31的范围)Sample Input2 2 1 1Sample Output2解:指数型母函数的应用#include<iostream>#includ 阅读全文
posted @ 2012-04-18 09:35 龙杉老师
摘要:母函数分为:普通型母函数,指数型母函数。普通型母函数主要是来求组合的方案数,而指数型母函数是求多重排列数。关于普通型母函数的讲解,以前写过:http://www.cnblogs.com/hsqdboke/archive/2012/04/17/2453677.html指数型母函数主要是关于排列组合方面的问题。分别看两个比较典型的问题对比:普通母函数问题:有红球两个,白球、黄球各一个,试求有多少种不同的组合方案。指数型母函数问题:假设有8个元素,其中a1重复3次,a2重复2次,a3重复3次。从中取r个组合,求其排列数。下面是指数型母函数的定义:对于上面的问题“假设有8个元素,其中a1重复3次,a2 阅读全文
posted @ 2012-04-17 20:58 龙杉老师
摘要:Ignatius and the Princess IIIProblem Description"Well, it seems the first problem is too easy. I will let you know how foolish you are later." feng5166 says."The second problem is, given an positive integer N, we define an equation like this:N=a[1]+a[2]+a[3]+...+a[m];a[i]>0,1<=m 阅读全文
posted @ 2012-04-17 20:08 龙杉老师
摘要:母函数详解在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。对每个序列都可以写出以上每个类型的一个母函数。构造母函数的目的一般是为了解决某个特定的问题,因此选用何种母函数视乎序列本身的特性和问题的类型。这里先给出两句话,不懂的可以等看完这篇文章再回过头来看:1.“把组合问题的加法法则和幂级数的乘幂对应起来”2.“母函数的思想很简单 — 就... 阅读全文
posted @ 2012-04-17 15:04 龙杉老师
摘要:^^^转载请注明出处,谢谢合作O(∩_∩)O~Be the WinnerLet's consider m apples divided into n groups. Each group contains no more than 100 apples, arranged in a line. You can take any number of consecutive apples at one time.For example "@@@" can be turned into "@@" or "@" or "@ 阅读全文
posted @ 2012-04-17 08:53 龙杉老师
摘要:^^^转载请注明出处,谢谢合作O(∩_∩)O~JohnProblem DescriptionLittle John is playing very funny game with his younger brother. There is one big box filled with M&Ms of different colors. At first John has to eat several M&Ms of the same color. Then his opponent has to make a turn. And so on. Please note that 阅读全文
posted @ 2012-04-17 00:13 龙杉老师
摘要:^^^转载请注明出处,谢谢合作O(∩_∩)O~取石子游戏 Problem Description1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win".Input输入有多组.每组第1行是2<=n<2^31. n=0退出.Output先取者负输出"Second win". 先取者胜输出"First win".参看Sample Output.Sample Input 阅读全文
posted @ 2012-04-16 23:24 龙杉老师
摘要:^^^转载请注明出处,谢谢合作O(∩_∩)O~取(2堆)石子游戏Problem Description有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。如果你胜,你第1次怎样取子?Input输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,且a<=b。a=b=0退出。 阅读全文
posted @ 2012-04-15 20:21 龙杉老师
摘要:^^^转载请注明出处,谢谢合作O(∩_∩)O~Problem Descriptionm堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出怎样取子.例如5堆 5,7,8,9,10先取者胜,先取者第1次取时可以从有8个的那一堆取走7个剩下1个,也可以从有9个的中那一堆取走9个剩下0个,也可以从有10个的中那一堆取走7个剩下3个.Input输入有多组.每组第1行是m,m<=200000. 后面m个非零正整数.m=0退出.Output先取者负输出No.先取者胜输出Yes,然后输出先取者第1次取子的所有方法.如果从有a个石子的堆中取若干个后剩下b个后会胜就 阅读全文
posted @ 2012-04-15 11:07 龙杉老师
摘要:^^^转载请注明出处,谢谢合作O(∩_∩)O~取石子游戏Problem Description有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。Input输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,000。Output输出对应也有若干行,每行包含一个数字1或0,如果最 阅读全文
posted @ 2012-04-15 00:25 龙杉老师
摘要:^^^转载请注明出处,谢谢合作O(∩_∩)O~博弈论总结有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s, 阅读全文
posted @ 2012-04-14 21:40 龙杉老师
摘要:~~转载请注明出处^^Phone ListProblem DescriptionGiven a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let’s say the phone catalogue listed these numbers:1. Emergency 9112. Alice 97 625 9993. Bob 91 12 54 26In this case, it’s not possible to call B 阅读全文
posted @ 2012-04-14 19:32 龙杉老师
摘要:~~ 转载请注明出处^^今天看到了,蓝桥杯上面的一道题,求21位花朵数,题目是:l(编程题)花朵数一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。例如:当N=3时,153就满足条件,因为1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水仙花数(其中,“^”表示乘方,5^3表示5的3次方,也就是立方)。当N=4时,1634满足条件,因为1^4 + 6^4 + 3^4 + 4^4 = 1634。当N=5时,92727满足条件。实际上,对N的每个取值,可能有多个数字满足条件。程序的任务是:求N=21时,所有满足条件的花朵数。注意:这个整数有21 阅读全文
posted @ 2012-04-14 15:09 龙杉老师