首页 > 代码库 > hdu 4811 Ball

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\n",a[f[1]][f[2]][f[3]]+n*tep);27     }28     return 0;29 }
View Code