BZOJ1599: [Usaco2008 Oct]笨重的石子

1599: [Usaco2008 Oct]笨重的石子

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 758  Solved: 513
[Submit][Status]

Description

贝西喜欢棋盘游戏和角色扮演类游戏所以她说服Farmer John把她带到玩具店,在那里,她购买了三个不同的骰子,这三个质量均匀的骰子,分别有S1,S2,S3个面。(2 <= S1 <= 20; 2 <= S2 <= 20; 2 <= S3 <= 40). 贝西掷啊掷啊掷啊,想要知道出现几率最大的和是多少。 问题给出三个骰子的面数,让你求出出现几率最大的和是多少。如果有很多种和出现的几率相同,那么就输出小的那一个。

Input

*第一行:三个由空格隔开的整数:s1,s2,s3

Output

*第一行:所要求的解

Sample Input

3 2 3

Sample Output

5


输出详解:


这里是所有可能的情况.

1 1 1 -> 3 1 2 1 -> 4 2 1 1 -> 4 2 2 1 -> 5 3 1 1 -> 5 3 2 1 -> 6

1 1 2 -> 4 1 2 2 -> 5 2 1 2 -> 5 2 2 2 -> 6 3 1 2 -> 6 3 2 2 -> 7

1 1 3 -> 5 1 2 3 -> 6 2 1 3 -> 6 2 2 3 -> 7 3 1 3 -> 7 3 2 3 -> 8

5和6出现的几率都是最大的,所以输出5.

HINT

 

Source

题解:
我刚开始输出(x+y+z+3)>>1,结果WA了
后来打了个暴力就A了,想了想应该差不多呀,
结果打了个小程序两个一对拍吓尿我了。。。
差不多都不一样。。。
代码:
1.错解
 1 var x,y,z,i,n:longint;
 2 begin
 3  assign(input,'input.txt');assign(output,'output2.txt');
 4  reset(input);rewrite(output);
 5  readln(n);
 6  for i:=1 to n do
 7   begin
 8    readln(x,y,z);
 9    writeln((x+y+z+3)>>1);
10   end;
11  close(input);close(output);
12 end.
13             
View Code

2.正解=暴力

 1 var x,y,z:longint;
 2     i,j,k,l,n,max,ans:longint;
 3     f:array[0..100] of longint;
 4 begin
 5  assign(input,'input.txt');assign(output,'output.txt');
 6  reset(input);rewrite(output);
 7  readln(n);
 8  for l:=1 to n do
 9    begin
10     readln(x,y,z);
11     fillchar(f,sizeof(f),0);
12     for i:=1 to x do
13      for j:=1 to y do
14       for k:=1 to z do
15        inc(f[i+j+k]);
16    for i:=1 to x+y+z do if f[i]>max then begin max:=f[i];ans:=i;end;
17    writeln(ans);
18    end;
19  close(input);close(output);
20 end.      
View Code

为什么呢?请大神指教。

posted @ 2014-08-11 21:19  ZYF-ZYF  Views(213)  Comments(0Edit  收藏  举报