zoukankan      html  css  js  c++  java
  • hdu1557

    权利指数

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 419    Accepted Submission(s): 286


    Problem Description
    在选举问题中,总共有n个小团体,每个小团体拥有一定数量的选票数。如果其中m个小团体的票数和 超过总票数的一半,则此组合为“获胜联盟”。n个团体可形成若干个获胜联盟。一个小团体要成为一个“关键加入者”的条件是:在其所在的获胜联盟中,如果缺 少了这个小团体的加入,则此联盟不能成为获胜联盟。一个小团体的权利指数是指:一个小团体在所有获胜联盟中成为“关键加入者”的次数。请你计算每个小团体 的权利指数。
     


    Input
    输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为一个正整数n(0<n<=20)。第二行有n个正整数,分别表示1到n号小团体的票数。
     


    Output
    对每组测试数据,在同一个行按顺序输出1到n号小团体的权利指数。
     


    Sample Input
    2
    1
    10
    7
    5 7 4 8 6 7 5
     


    Sample Output
    1
    16 22 16 24 20 22 16
    题意:中文题意不解释
    分析:n最大只有二十,可以暴力枚举。二进制枚举,0,代表没有这个个体,1代表有这个个体。如果某个团体总和大于团体总票的一半,然后比较团体中每个个体,分别被剪掉后是否小于总票的一半,小于,该个体则为关键团体,加1;首先需要一个变量sum保存团体总票的一半。需要一个数组b记录某个团体的成员的位置。需要一个变量ss记录该团体的总票数。最后需要一个ans数组记录每个成员是关键团体的次数
     
    #include<cstdio>
    int a[22],b[22],ans[22];
    int main(){
        int t,i,j,tt,temp,ss,pos,n;
        scanf("%d",&t);
        while(t--){
            scanf("%d",&n);
            int sum=0;
            for(i=0;i<n;i++){
                scanf("%d",a+i);
                ans[i]=0;
                sum+=a[i];
            }
            sum>>=1;
            int x=(1<<n);
            for(i=0;i<x;i++){//二进制枚举
                tt=0;temp=i;pos=0;ss=0;
                while(temp){
                    if(temp&1){
                        b[tt++]=pos;//记录该团体每个成员在数组a中的位置
                        ss+=a[pos];//记录总票数
                    }
                    temp>>=1;
                    pos++;
                }
                if(ss>sum){
                    for(j=0;j<tt;j++)
                        if(ss-a[b[j]]<=sum)
                            ans[b[j]]++;
                }
            }
            for(i=0;i<n-1;i++)
                printf("%d ",ans[i]);
            printf("%d
    ",ans[n-1]);
        }
        return 0;
    }
    
  • 相关阅读:
    vue+element-ui 字体自适应不同屏幕
    nginx——前端服务环境
    定位问题 vue+element-ui+easyui(兼容性)
    四叶草(css)
    vue-cil 打包爬坑(解决)
    el-tree文本内容过多显示不完全问题(解决)
    v-for(:key)绑定index、id、key的区别
    top 命令详解
    uptime 命令详解
    w 命令详解
  • 原文地址:https://www.cnblogs.com/wabi87547568/p/4688144.html
Copyright © 2011-2022 走看看