hdu 4811 Ball

分类讨论,看分成两堆两边的个数。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 __int64 a[3][3][3];
 8 __int64 f[4],n,k,tep;
 9 
10 int main()
11 {
12     a[0][0][0]=0,a[0][0][1]=0,a[0][0][2]=1,a[0][1][1]=1,a[0][1][2]=3,a[0][2][2]=6;
13     a[1][1][1]=3,a[1][1][2]=6,a[1][2][2]=10,a[2][2][2]=15;
14     while(scanf("%I64d%I64d%I64d",&f[1],&f[2],&f[3])!=EOF)
15     {
16         n=k=0;
17         for(int i=1;i<4;i++)
18         {
19             if(f[i]>2) k=2;
20             else k=f[i];
21             n+=f[i]-k;
22             f[i]=k;
23         }
24         sort(f+1,f+4);
25         tep=f[1]+f[2]+f[3];
26         printf("%I64d
",a[f[1]][f[2]][f[3]]+n*tep);
27     }
28     return 0;
29 }
View Code
原文地址:https://www.cnblogs.com/vermouth/p/3835949.html