zoukankan      html  css  js  c++  java
  • “Shopee杯” e起来编程暨武汉大学2020年大学生程序设计大赛决赛(重现赛)A--A Simple Problem about election(模拟)

    地址:https://ac.nowcoder.com/acm/contest/5523/A

         题意:刚开始没读懂。。。题意就是给出n个人,每个人m张票。第一个数是本人得的票数。除了本人以外,所有人都投过了票,现在他要把m张票投完,怎么投才能使自己的排名更靠前。由于他的名字关系,同样的票数,他要排在最后。

         解析:先投给自己一张(规定了只能投自己一票)。然后先投比他大的,因为比他大的票数再多,也影响不到自己的排名了。投完比他大的,如果还有余票,投比他小的而且和他差值>1的,这样也不会影响到他的排名。最后如果还有余票,就投给比他少而且差值<=1的了。投完了排个序,找到第一个等于本人票数的位置输出即可。

    #include<iostream>
    #include<cstring>
    #include<map>
    #include<cstdlib>
    #include<algorithm>
    #include<set>
    using namespace std;
    typedef long long ll;
    const int maxn=1e5+5;
    ll a[maxn];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n,m;
            cin>>n>>m;
            for(int i=1;i<=n;i++)
                cin>>a[i];
            a[1]++;
            int md=a[1];
            int ans=m-1;
            for(int i=2;i<=n;i++)
            {
                if(ans==0)
                    break;
                if((a[i]>=md))
                {
                    a[i]++;
                    ans--;
                }
            }
            if(ans>0)
            {
                for(int i=2;i<=n;i++)
                {
                    if(ans==0)
                        break;
                    if(md-a[i]>1)
                    {
                        a[i]++;
                        ans--;
                    }
                }
                if(ans>0)
                {
                    for(int i=2;i<=n;i++)
                    {
                        
                        if((a[i]<md)&&(md-a[i])<=1)
                        {
                            a[i]++;
                            ans--;
                        }if(ans==0)
                            break;
                    }
                }
            }
            sort(a+1,a+1+n);
            for(int i=1;i<=n;i++)
            {
                if(a[i]==md)
                {
                    cout<<n-i+1<<endl;break;
                }
            }
        }
    }
  • 相关阅读:
    利用循环实现评论数据结构
    models中字段用处总结
    models中字段结合admin可以做验证用
    学生成绩信息管理系统
    递归完成多级评论
    python负数求余与整除原则
    python列表推导式
    Python中sorted()和sort()区别
    购物车代码(学习版,很多地方需要优化)
    for.....else用法
  • 原文地址:https://www.cnblogs.com/liyexin/p/12782698.html
Copyright © 2011-2022 走看看