• 9/17 越努力越幸运-思维赛(3.0) 解题思路


    A

    题意:给4个数,它们为3个数其中两两相加之和和三个数相加之和,求这三个

    解题思路:先找出所给的4个数的最大值,然后用最大值从后面分别减去另外三个数输出的就是所求的三个数

    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    int main()
    {
      int a,b,c,d,max=0,x[4],i;
      while(~scanf("%d%d%d%d",&a,&b,&c,&d))
      {
          x[0]=a;x[1]=b;x[2]=c;x[3]=d;
          for(i=0;i<4;i++)
          {
              if(x[i]>max)
                max=x[i];
          }
        if(max==a)
            printf("%d %d %d
    ",max-d,max-c,max-b);
            else
            if(max==b)
            {
                printf("%d %d %d
    ",max-d,max-c,max-a);
            }
            if(max==c)
            {
                printf("%d %d %d
    ",max-d,max-b,max-a);
            }
            if(max==d)
            {
                printf("%d %d %d
    ",max-c,max-b,max-a);
            }
      }
     return 0;
    }
    View Code

     B

    题意:给一组数据,将其中的数+d或者-d或者不变然后都变为相同的数,如果能输出这个数,如果不能输出-1

    解题思路:找出数组中的最大值和最小值,然后看a[i]是否等于(minn+maxx)/2

     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<string.h>
     4 int main()
     5 {
     6   int n,a[110],b[110],i,min,max,x;
     7   while(~scanf("%d",&n))
     8   {
     9       for(i=0;i<n;i++)
    10         scanf("%d",&a[i]);
    11 
    12         min=a[0];
    13         max=a[0];
    14       for(i=0;i<n;i++)
    15       {
    16           if(a[i]<min)
    17             min=a[i];
    18           if(a[i]>max)
    19             max=a[i];
    20       }
    21       int flag=1;
    22       for(i=0;i<n;i++)
    23       {
    24           if(a[i]==min||a[i]==max)
    25           {
    26               continue;
    27           }
    28           else
    29               if(a[i]!=min&&a[i]!=max&&a[i]==(max+min)/2&&(max+min)%2==0)
    30                 x=(max-min)/2;
    31           else
    32           {
    33               flag=2;
    34               printf("-1
    ");
    35               break;
    36           }
    37       }
    38       if(flag==1)
    39         {
    40             if(min%2==0&&max%2==0)
    41                    x=(max-min)/2;
    42                     else if(min%2!=0&&max%2!=0)
    43                         x=(max-min)/2;
    44                     else
    45                         x=max-min;
    46              printf("%d
    ",x);
    47         }
    48   }
    49  return 0;
    50 }
    View Code

    C

    题意:一只猫每周的每一天吃的东西都不一样,现在给出每一样东西能吃的天数,求不间断的从周几开始吃能吃的最大天数

    解题思路:找出能吃最少天数的食物,然后依次进行循环判断,记录下从开始到结束的天数

    #include<stdio.h>
    #include<math.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int k,i,a,b,c,m,n,p,minn;
        while(cin>>a>>b>>c)
        {
            m=a/3; n=b/2; p=c/2;
            minn=m;
            minn=min(minn,n);
            minn=min(minn,p);
            int sum=7*minn;
            m=a-minn*3; n=b-minn*2; p=c-minn*2;
            int j=7;
            int x[101]={0};
            while(j--)
            {
                i=j+1; k=0;
                a=m; b=n; c=p;
                for(;i<=7;i++)
                {
                    if(i==1||i==4||i==7)
                    {
                        if(a==0)
                            break;
                        a--;
                        k++;
                        x[j]=k;
                    }
                    if(i==2||i==6)
                    {
                        if(b==0)
                            break;
                        b--;
                         k++;
                        x[j]=k;
                    }
                    if(i==3||i==5)
                    {
                        if(c==0)
                            break;
                        c--;
                         k++;
                        x[j]=k;
                    }
                    if(i==7)
                        i=0;
                }
            }
            sort(x,x+7);
            cout<<sum+x[6]<<endl;
        }
    }
    View Code

    D

    题意:有两种电池能用与白天和晚上,白天用b电池能充电变为a电池,求所有的电池能用的最大天数

    解题思路:先判断是白天还是晚上,然后决定用什么电池,依次进行判断直到结束

    #include<stdio.h>
    #include<math.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int n,b,a,i,x[200010],count=0,p,q;
        while(cin>>n>>b>>a)
        {
            p=a;q=b;
            for(i=0;i<n;i++)
                cin>>x[i];
                for(i=0;i<n;i++)
                {
                    if(x[i]==0)
                      {
                          if(a>=1)
                          {
                              a--;
                              count++;
                          }
                          else
                          {
                              b--;
                              count++;
                          }
                      }
                      else
                      {
                          if(a==p)
                         {
                             if(a>=1)
                             {
                                 a--;
                                 count++;
                             }
                             else
                             {
                                 b--;
                                 a++;
                                 count++;
                             }
                         }
                         else
                         {
                             if(b>=1)
                             {
                                 b--;
                                 a++;
                                 count++;
                             }
                             else
                             {
                                 a--;
                                 count++;
                             }
                         }
                      }
                      if(a==0&&b==0)
                        break;
                }
                    cout<<count<<endl;
        }
     return 0;
    }
    View Code
  • 相关阅读:
    LeetCode Binary Tree Inorder Traversal
    解析看病难看病贵
    [转]微服务概念解析
    OC中几种延时操作的比較
    Android AOP之路三 Android上的注解
    浅析C#中的托付
    图类算法总结
    有关https安全的相关内容介绍
    BZOJ 3684: 大朋友和多叉树 [拉格朗日反演 多项式k次幂 生成函数]
    Codeforces 250 E. The Child and Binary Tree [多项式开根 生成函数]
  • 原文地址:https://www.cnblogs.com/xiao20000605/p/11624287.html
Copyright © 2020-2023  润新知