• p1905


      这道题同样不难,按照题目给的意思模拟就好。然后我刚开始日常用sort排序,然后再模拟,理论上是没问题的,但是就……还是把代码贴出来看看。。。

    int i,f,n,t,tem;
    struct abc
    {
        int num;
        int r;
    }o[1010];
    bool mycmp(abc x,abc y)
    {
        if(x.r==y.r) return x.num<y.num;
        return x.r>y.r;
    }
    int main()
    {
    ios::sync_with_stdio(false);
    freopen("123.in","r",stdin);
        cin>>n>>t;
        for(i=1;i<=n;i++)
        {
            cin>>o[i].r;
            o[i].num=i;
        }
        for(;t>=1;t--)
        {
            sort(o+1,o+1+n,mycmp);
            cout<<o[1].num<<endl;
            tem=o[1].r/(n-1);
            for(f=2;f<=n;f++)
                o[f].r+=tem;
            if(o[1].r!=(n-1)*tem)
            {
                tem=o[1].r%(n-1);
                for(f=2;f<=n;f++)
                    if(o[f].num>=1&&o[f].num<=tem)
                        o[f].r++;
            }
            o[1].r=0;
        }
        return 0;  
    }  
    错了的

      虽然不应该用,但是基本上是对的。然而把稍微复杂的数据带进去就错了,还一直找不出原因。

      然后就罪恶的看了题解,明明和我想的一样啊?然后就更罪恶的看了别人的代码,哦……

      原来在处理余数的时候加到刚刚播放的那首的时候跳是跳了,但是相当于这一首没加上,以后还要加给别人。

      然后在改进了判断曲目的策略之后(只需要找到最大的那首,以后的都不需要排序)才有了正确解法。

    #include<iostream>
    #include<iomanip>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int i,f,n,t,shang,yu,maxo;
    int  o[1010];
    int main()
    {
    ios::sync_with_stdio(false);
        cin>>n>>t;
        for(i=1;i<=n;i++)
        {
            cin>>o[i];
        }
        for(;t>=1;t--)
        {
            maxo=1;
            for(i=2;i<=n;i++)
            {
                if(o[i]>o[maxo])
                    maxo=i;
            }
            cout<<maxo<<endl;
    //////////////////////////
            shang=o[maxo]/(n-1);
            yu=o[maxo]%(n-1);
            o[maxo]=0;
            for(i=1;i<=n;i++)
            {
                if(i==maxo) i++;
                o[i]+=shang;
            }
            for(i=1;i<=yu;i++)
            {
                if(i==maxo) 
                {
                    yu++;
                    i++;
                }
                o[i]++;
            }
        }
        return 0;  
    }  
    正确的
  • 相关阅读:
    Eclipse出现Access restriction : The type BASE64Decoder is not accessible due to restriction问题
    Struts学习总结(1)
    TCPMon使用总结
    AJAX入门学习总结
    JSON for java入门总结
    JSTL使用总结(2) fmt标签库和fn标签库
    JSTL使用总结(1) 核心标签库和SQL标签库
    JavaScript学习总结
    Ant学习总结
    C# .NET中如何使用GetCursorPos函数
  • 原文地址:https://www.cnblogs.com/qywyt/p/9009840.html
Copyright © 2020-2023  润新知