HDU - 4422-The Little Girl who Picks Mushrooms
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU - 4422-The Little Girl who Picks Mushrooms相关的知识,希望对你有一定的参考价值。
题目链接:https://vjudge.net/problem/HDU-4422
题目大意:
自行百度
题目分析:
当n<=3的时候,易得可以得到的最多的蘑菇是1024。
当n>3时,可以进行分类讨论。
注意有两个莫名奇妙的毒点:
1.我用取模WA而用while不断相减AC
2.三个相加等于零的情况也可以通过
给出代码:
1 #include <cstdio> 2 #include <iostream> 3 #include <string> 4 #include <set> 5 #include <cmath> 6 #include <algorithm> 7 #include <cstring> 8 #include <vector> 9 using namespace std; 10 int num[10]; 11 int main() 12 { 13 int n; 14 while(cin>>n) 15 { 16 int sum=0; 17 for(int i=0;i<n;i++) 18 { 19 scanf("%d",&num[i]); 20 sum+=num[i]; 21 } 22 if(n<=3) 23 cout<<1024<<endl; 24 else 25 { 26 if(n==4) 27 { 28 int flag=1; 29 for(int i=0;i<n;i++) 30 { 31 int t=sum-num[i]; 32 if(t%1024==0) 33 { 34 cout<<1024<<endl; 35 flag=0; 36 break; 37 } 38 } 39 if(flag) 40 { 41 int maxn=0; 42 for(int i=0;i<n;i++) 43 { 44 for(int j=i+1;j<n;j++) 45 { 46 int t=num[i]+num[j]; 47 while(t>1024) 48 t-=1024; 49 maxn=max(maxn,t); 50 } 51 } 52 cout<<maxn<<endl; 53 } 54 } 55 if(n==5) 56 { 57 int maxn=0; 58 for(int i=0;i<n;i++) 59 { 60 for(int j=i+1;j<n;j++) 61 { 62 for(int k=j+1;k<n;k++) 63 { 64 int t=num[i]+num[j]+num[k]; 65 if(t%1024==0) 66 { 67 int tt=sum-t; 68 while(tt>1024) 69 tt-=1024; 70 maxn=max(tt,maxn); 71 } 72 } 73 } 74 } 75 cout<<maxn<<endl; 76 } 77 } 78 } 79 return 0; 80 }
以上是关于HDU - 4422-The Little Girl who Picks Mushrooms的主要内容,如果未能解决你的问题,请参考以下文章
hdu 2276 Kiki & Little Kiki 2 矩阵快速幂
HDU 1820 / uva 861 Little Bishops