测试题,先上题:
数学作业
(homework.cpp)
【问题描述求:方程x1+2x2+„+nxn=m的所有非负整数解(x1,x2,„,xn)的个数。例如,方程:x1+2x2+3x3+4x4+5x5=5有7组解:(5,0,0,0,0)、(3,1,0,0,0)、……、(0,0,0,0,1)。
【输入数据】(homework.in)
2个整数n,m
【输出数据】(homework.out)
方程非负整数解的个数ans,如果解超过10^9,只需输出ans mod 10^9。
【输入样例】 5 5
【输出样例】 7
【数据范围】 1≤n≤5000;0≤m≤5000。
据说是很明显的完全背包问题,可惜我没怎么看出来,研究了半天只发现和背包有关,于是乎鼓捣了个类似01背包的东西上去,开了二维数组,但[5000][5000]明显不合适,那么就需要倒序。另外还有个要注意的点是结果如果超过10的9次方,只输入以内的结果。所以是需要取余1个10的9次方。这种题因为样例数据小,可以手动操作下可以发现有迹可循。
for(int i=1;i<=n;i++){
for(int j=i;j<=m;j++){
f[j]=(f[j]+f[j-i])%1000000000;
}
}
printf("%lld",f[m]);
第二题
魔法石的诱惑
(rob.cpp)
问题描述
修罗魔王远远地看见邪狼王狂奔而来,问道:“慌慌张张干什么?”
邪狼王大口大口初期:“我路过一家魔法石店,看到摆着那么多高阶魔法石,我就去抢了一大袋。”
修罗王怒道:“光天化日之下,朗朗乾坤,众目睽睽之下,你也敢抢?”
狼王:“我只看到了魔法石,没有看到人。。。”
修罗王:“。。。。。”
其实邪狼王的贪婪也很容易理解,因为高阶魔法石有一个特征,即它的重量进行阶乘运算后末尾有几个0,就拥有同等重量普通魔法石几倍的法力,例如5!=5*4*3*2*1=120,所以120有一个0,这意味着该魔法石拥有同等重量的普通魔法石1倍的魔法力,你的任务是找到最小的自然数N,使N!在十进制下有Q个0结尾。
输入格式(rob.in)
一个数Q(0≤Q≤10^8)
输出格式(rob.out)
如果无解,输出”No solution”,否则输出N
输入样例
2
输出样例
10
这神奇的剧情展开还以为要挖点信息出来,然而对题并没有什么卵用。据说可以用纯数学的方法做。这道题很明显的可以看到给的数据范围较大,于是乎要用到分治中的二分 。
while (start <= end)//二分查找
{
int mid = (end - start) / 2 + start;
int t = solve(mid);
if (t == Q && mid < ans)
ans = mid;
if (t > Q)
end = mid - 1;
else if ( t < Q )
start = mid + 1;
else
end = mid - 1;
}
if (ans != 500000001)
printf("%d\n", ans);
else
printf("No solution\n");
架设电话线
(phoneline.cpp)
Farmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务。于是,FJ必须为此向电信公司支付一定的费用。
FJ的农场周围分布着N(1 <= N <= 1,000)根按1..N顺次编号的废弃的电话线杆,任意两根电话线杆间都没有电话线相连。一共P(1<= P <= 10,000)对电话线杆间可以拉电话线,其余的那些由于隔得太远而无法被连接。
第i对电话线杆的两个端点分别为A_i、B_i,它们间的距离为L_i (1 <= L_i <= 1,000,000)。数据中保证每对{A_i,B_i}最多只出现1次。编号为1的电话线杆已经接入了全国的电话网络,整个农场的电话线全都连到了编号为N的电话线杆上。也就是说,FJ的任务仅仅是找一条将1号和N号电话线杆连起来的路径,其余的电话线杆并不一定要连入电话网络。
经过谈判,电信公司最终同意免费为FJ连结K(0 <= K < N)对由FJ指定的电话线杆。对于此外的那些电话线,FJ需要为它们付的费用,等于其中最长的电话线的长度(每根电话线仅连结一对电话线杆)。如果需要连结的电话线杆不超过K对,那么FJ的总支出为0。
请你计算一下,FJ最少需要在电话线上花多少钱。
输入(phoneline.in)
* 第1行: 3个用空格隔开的整数:N,P,以及K
* 第2..P+1行: 第i+1行为3个用空格隔开的整数:A_i,B_i,L_i
输出(phoneline.out)
* 第1行: 输出1个整数,为FJ在这项工程上的最小支出。如果任务不可能完成,输出-1
样例输入
5 7 1 1 2 5 3 14 2 4 8 3 2 3 5 2 9 3 4 7 4 5 6
样例输出
4
依旧很多废话,但这道题饶了几个弯,废话中还是有些信息的,要用到二分,但这道题确实不怎么懂。。