• SSLZYC 小麦高度


    题目大意:
    Smart和Sarah为了让他们种的小麦的高度相同,决定玩以下的游戏:
    1、当轮到Smart的时候,他会选择最短的那个小麦,然后延长高度到第二短的小麦的高度。
    2、当轮到Sarah的时候,她会选择最长的那个小麦,然后剪短高度到第二长的小麦的高度。
    游戏如果能继续的话,小麦中必须有三种不同的高度,如果有人不能再继续游戏,那么他就失败了。
    给定所有小麦的高度,假设从Smart开始游戏,写一个程序决出游戏中谁是胜者,并输出游戏结束时最高的和最低的小麦的高度。


    思路:
    这道题是一道暴力模拟的问题。我们先用桶排,计算每种长度的小麦各有几个,接着暴力模拟,可以轻(kun)松(nan)地出奇迹。
    由于编程过程较容易理解,所以在此不多解释了。


    代码:

    #include <cstdio>
    #include <iostream>
    using namespace std;
    
    int a[100001],b[100001],c[100001],n,x,l,r;
    
    int main()
    {
        freopen("wheat.in","r",stdin);
        freopen("wheat.out","w",stdout);
        scanf("%d",&n);
        for (int i=1;i<=n;i++)
        {
            scanf("%d",&x);
            a[x]++;  //桶排序
        }
        for (int i=1;i<=100000;i++)
         if (a[i]>0) 
         {
             r++;  
             b[r]=a[i];  //从小到大小麦依次的高度
             c[r]=i;  //小麦的编号
         }
        l=1;
        if (r-l<=1)   //特殊情况(还没开始就结束了)
        {
            printf("Sarah\n%d %d",c[l],c[r]);
            return 0;
        }
        while (r-l>1)  //结束条件
        {
            if (b[r]>b[l]) 
            {
                b[r]-=b[l];
                b[r-1]+=b[l];
                b[l+1]+=b[l];
                b[l]=0;
            }
            else
            {
                b[l]-=b[r];
                b[l+1]+=b[r];
                b[r-1]+=b[r];
                b[r]=0;
            }
            if (b[l]==0) l++;
            if (b[r]==0) r--;        //暴力模拟
        }
        if (b[l]<=b[r]) printf("Sarah\n%d %d",c[l],c[r]);
                   else printf("Smart\n%d %d",c[l],c[r]);
        return 0;
    }
  • 相关阅读:
    springcloud(Feign)三
    Hibernate @TableGenrator表管理主键生成策略
    Hibernate @Entity注解配置说明
    Hibernate @SequenceGenerator的注解介绍
    java StrutsTypeConverter的使用
    structs2 DefaultTypeConverter类型转换说明
    Struts2(XWork)拦截器的功能介绍:
    structs2 防止表单的重复提交token
    Structs ActionProxy深度阅读
    Structs2 request_locale国际化介绍
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/9313126.html
Copyright © 2020-2023  润新知