本次比赛为真·水题欢乐赛
Parliament
【题目描述】
给出一个正整数N,把N分解成若干个不同的正整数相加,使得这若干个正整数的乘积最大.按升序输出这若干个正整数.
【输入样例】
7
【输出样例】
3 4
【数据范围】
20% 的数据 N<=20
40% 的数据 N<=200
60% 的数据 N<=1000
100%的数据 N<=10000
Solution
尽量分到根号N处即可。。
Oneperson
【题目描述】
这是一个传说中的猜数游戏,灏灏心里想一个数,然后让你猜,你总共有K次猜的机会,和L次猜大的机会
如果你猜的数比灏灏想的数小,那么K-1
如果你猜的数比灏灏想的数大,那么K-1,L-1
问,给你K,L,保证能猜到正确数字时,你能猜到的最大的数是多少?答案保证在longint范围内。
【输入样例】
3 0
3 1
10 5
7 7
0 0
【输出样例】
Case 1: 3
Case 2: 6
Case 3: 847
Case 4: 127
样例解释:对于Case 2,
我们先猜3(3,1),
(1)如果灏灏说大了,那么剩下(2,0),接着猜1,再猜2即可
(2)如果灏灏说小了,那么剩下(2,1),接着猜5,
如果灏灏说大了,那接着猜3,再猜4即可, 如果灏灏说小了,剩下(1,0),猜6即可。所以6是可能猜到的最大数。
【Hint】
注意空格~
输入数据包含若干组数据,以0,0结束。
数据保证0<=K,L<=30
Solution
f[i,j]=f[i,i](j≥i)
f[i,j]=i(j=0)
f[i,j]=f[i−1][j]+f[i−1][j−1]+1(j>0)
UglyNumbers
【题目描述】
我们认为,UglyNumbers是这样定义的,它只由2,3,5相乘而成(1除外),如1,2,3,4,5,6,8,9,10,12为最小的10个Ugly Numbers。问,第K小的UglyNumbers是哪个?
输入数据以K=0结束。
【输入样例】
1
2
9
0
【输出样例】
1
2
10
【数据范围】
30% K<=10
50% K<=100
70% K<=1000
100% K<=1500
Solution
用优先队列维护
从1开始,每次从pq里取出一个数字就乘2 3 5再丢到pq里去,取出K次即可。
记得有道题也是这样类似的方法。
http://blog.csdn.net/huanghongxun/article/details/51181809
平方 Power
【题目描述】
给出n,m,你需要求出有多少对整数 <a,b> <script type="math/tex" id="MathJax-Element-56"> </script>满足 1≤a≤n 且 1≤b≤m 使得 (a√+b√)2 是整数
【输入格式】
一行2个数 n,m
【输出格式】
一行为答案
【输入样例】
1 4
【输出样例】
2
【数据约定】
40%数据:n,m<=5000
100%数据:1<=n,m<=77777
Solution
即为求
a+b+2ab−−√
也就是说有多少个
a
和
我们可以枚举a,然后看a的质因子的幂,就可以搞出b的个数了。
时间复杂度
O(nn−−√)
最小公倍数
Lcm
【题目描述】
你要从[1,n]中找出3个整数(可以重复),使得这三个数的最小公倍数最大
【输入格式】
一个数n
【输出格式】
一个数为答案
【输入样例】
3
【输出样例】
6
【数据约定】
40%数据:n<=200
100%数据:1<=n<=10^6
Solution
n是奇数时答案为
A3n
n为偶数且不能被3整除时,答案是
n(n−1)(n−3)
,否则
A3n−1
Knumber
【题目描述】
给你一序列数,求某个区间的第k小数
【输入格式】
第一行n,m
第二行n个数,为原数列,每个数绝对值小于10^9,且数字各不相同
接下来m行每行a,b,c,求[a,b]区间内第c小的数字
【输出格式】
输出m个数,为每个询问对应的答案
【输入样例】
7 3
1 5 2 6 3 7 4
2 5 3
4 4 1
1 7 3
【输出样例】
5
6
3
【数据约定】
40%数据n*m<=10^6
100%数据1<=n<=100000,1<=m<=5000
Solution
主席树裸题