UVA 10142 Australian Voting(模拟)

UVA 10142 Australian Voting(模拟)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

UVA 10142 Australian Voting(模拟)此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

题意:澳大利亚投票系统要求选民们将全部候选人按愿意选择的程度排序,一张选票就是一个排序。一開始,每张选票的首选项将被统计。若有候选人得票超过50%,他讲直接胜出;否则,全部并列最低的候选人出局,而那些将出局候选人排在第一位的选票将被又一次统计为排名最高的未出局候选人。这一筛选过程将持续进行,直到某个候选人得到超过50%的选票,或全部候选人得票同样。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const int N = 50;
#define INF 0x3fffffff
int vote[1050][N];
int out[N], cnt[N];
char name[N][100];
int num;
int main()
{
    int T, n, i, j;
    char str[1000];
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        getchar();
        for(i = 1; i <= n; i++)
            gets(name[i]);
        num = 0;
        while(gets(str) != NULL)
        {
            if(!strcmp(str, "")) break;
            int len = strlen(str);
            int s = 0, k = 0;
            for(i = 0; i < len; i++)
            {
                if(str[i] >= '0' && str[i] <= '9')
                    s = s * 10 + str[i] - '0';
                else
                {
                    vote[num][k++] = s;
                    s = 0;
                }
            }
            vote[num][k++] = s;
            num++;
        }
        memset(out, 0, sizeof(out));
        int flag = 0, rest = n, total = 0;
        while(rest > 1) //未出局候选人数超过1
        {
            total = 0; //总票数
            memset(cnt, 0, sizeof(cnt));
            for(i = 0; i < num; i++)
            {
                for(j = 0; j < n; j++)
                {
                    if(!out[vote[i][j]])
                    {
                        cnt[vote[i][j]]++;
                        total++;
                        break;
                    }
                }
            }
            for(i = 1; i <= n; i++)
                if(cnt[i] * 2 > total && !out[i])
                {
                    printf("%s\n",name[i]);
                    flag = 1;
                    break;
                }
            if(flag) break;
            int mmin = INF, mmax = 0;
            for(i = 1; i <= n; i++)
            {
                if(!out[i])
                {
                    mmin = min(mmin, cnt[i]);
                    mmax = max(mmax, cnt[i]);
                }
            }
            if(mmin == mmax)
                break;
            for(i = 1; i <= n; i++)
                if(cnt[i] == mmin)
                {
                    out[i] = 1;
                    rest--;
                }
        }
        if(!flag)
        {
            for(i = 1; i <= n; i++)
                if(!out[i])
                    printf("%s\n", name[i]);
        }
        if(T > 0)
            printf("\n");
    }
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117915.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mysql 联合查询_MySQL联合查询

    mysql 联合查询_MySQL联合查询MySQL联合查询联合查询:union,将多次查询(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接。基本语法联合查询由多条select语句构成,每条select语句获取的字段数相同,但与字段类型无关。基本语法:select语句1+union+[union选项]+select语句2+…;union选项:与select选项一样有两种all:无论重复…

  • pycharm创建项目没有venv_pycharm不能新建怎么办

    pycharm创建项目没有venv_pycharm不能新建怎么办问题:使用pycharm打开从git上下载的项目后,会发现项目实际上中并不存在项目需要的环境,此时,就需要根据项目中的requirement.txt文件新建环境。实现步骤一、首先使用pycharm打开项目,发现项目中不存在venv环境。二、file–>setting–>project–>projectinterpreter–>新建环境…

  • myeclipse8.5注册码在线生成_MyEclipse激活码

    myeclipse8.5注册码在线生成_MyEclipse激活码主要是myeclipse8.0的注册码,估计7.5的也能用,注册码都是到2014年12月过期,附送注册机Subscriber:zxSubscriptionCode:mLR8ZO-655444-6967865456424254Subscriber:huahuaSubscriptionCode:uLR8ZO-655444-69678657696224504Subscriber:yayaSubsc

  • web前端 | 如何选择撸码神器

    web前端 | 如何选择撸码神器进来,不少小伙子、小妹子来问一个家常便饭,但又逃不脱的问题:小北哥哥,现在这么多编辑器,我该用哪一个好啊,看着都不孬啊(孬字用得好!)此篇文章,纯客观分析顺便吹逼,老鸟和大神直接略过吧!省的你们看到我写这个问题,再说我烦不烦啊,这问题都讨论了多少年了,甚至好多群里,一看到谁在讨论编辑器,就要送飞机票。但很多转入前端的孩子还是很迷茫,能力和悟性也分三六九等,人不同,自然适合自己…

  • javascript–正则表达式

    javascript–正则表达式

  • 网络基础知识题_无基础最易入门乐器

    网络基础知识题_无基础最易入门乐器本文结合多年来的工作实践,来详细讲述一下作为IT从业人员要掌握的一些基础网络知识。

    2022年10月31日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号