| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
tips这题原始出处已经失效了,不过还好题目有备份:https://code.google.com/p/freeproblemset/downloads/list
但这里的标程在poj上交是WA的,主要原因如下:
(1) vb + vw < vr 要求直接输出单一个0;
(2) 不满足(1)但 vb==0 ,则输出k个0。
google了好久,把所有能交这题的oj都搜刮遍了,还hack出几个弱密码账号的ac源码,但来POJ交都是WA,不知道是什么原因。
修改过的标程如下:
#include<cstdio>
int main() {
double vb, vw, vr, vc;
int k, i;
while(1) {
scanf("%d %lf %lf %lf %lf", &k, &vb, &vw, &vr, &vc);
if(k == 0) break;
if(vb + vw < vr)
{
puts("0");
continue;
}
double f = (vb+(k-1)*vr-(k-1)*vw)/k;
if(f<0) f = 0;
double leftover = vb-(k-1)*(vc-vr);
if(f<leftover) f = leftover;
if(f+vw>vc) f = vc-vw;
if(f>vb) f= vb;
double s = 0;
if(k>1) {
s = (vb-f)/(k-1);
if(vr+s > vc) s=vc-vr;
}
printf("%d %.2f", k, f);
for(i = 0; i < k-1; i++) {
printf(" %.2f", s);
}
printf("\n");
}
return 0;
}
部分input:
2 15.0 25.0 1.0 50.0
3 15.0 8.0 3.0 10.0
3 14.0 8.0 3.0 10.0
3 30.0 25.0 1.0 50.0
3 30.0 5.0 1.0 50.0
3 0 5.0 1.0 50.0
3 0.2 0.5 1.0 50.0
3 200 0.5 1.0 50.0
0
对应output:
2 0.00 15.00
3 1.67 6.67 6.67
3 1.33 6.33 6.33
3 0.00 15.00 15.00
3 7.33 11.33 11.33
3 0.00 0.00 0.00
0
3 49.50 49.00 49.00
另外这题三分甚至爆搜都能过。
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator