首页 > ACM题库 > HDU-杭电 > hdu 2535 Vote-模拟[解题报告]C++
2014
02-09

hdu 2535 Vote-模拟[解题报告]C++

Vote

问题描述 :

美国大选是按各州的投票结果来确定最终的结果的,如果得到超过一半的州的支持就可以当选,而每个州的投票结果又是由该州选民投票产生的,如果某个州超过一半的选民支持希拉里,则她将赢得该州的支持。现在给出每个州的选民人数,请问希拉里至少需要赢得多少选民的支持才能当选?

输入:

多组输入数据
每组数据的第一行包括一个整数N(1<=N<=101),表示美国的州数,N=0表示输入结束
接下来一行包括N个正整数,分别表示每个州的选民数,每个州的选民数不超过100

输出:

多组输入数据
每组数据的第一行包括一个整数N(1<=N<=101),表示美国的州数,N=0表示输入结束
接下来一行包括N个正整数,分别表示每个州的选民数,每个州的选民数不超过100

样例输入:

3
5 7 5
0

样例输出:

6

2011-12-15 03:38:08

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2535

题意:中文~

mark:坑爹。wa了。是超过一半,不是超过或等于一半。

代码:

# include <stdio.h>
# include <stdlib.h>


int cmp(const void *a, const void *b)
{
    return *(int*)a - *(int*) b ;
}


int main ()
{
    int n, i, sum ;
    int a[110] ;
    while (~scanf ("%d", &n) && n)
    {
        for (i = 0 ; i < n ; i++)
            scanf ("%d", a+i) ;
        qsort (a, n, 4, cmp) ;
        sum = 0 ;
        for (i = 0 ; i < (n/2 + 1) ; i++)
            sum += a[i]/2 + 1;
        printf ("%d\n", sum) ;
    }
    
    return 0 ;
}

解题转自:http://www.cnblogs.com/lzsz1212/archive/2012/01/06/2314652.html


  1. 我还有个问题想请教一下,就是感觉对于新手来说,递归理解起来有些困难,不知有没有什么好的方法或者什么好的建议?

  2. 5.1处,反了;“上一个操作符的优先级比操作符ch的优先级大,或栈是空的就入栈。”如代码所述,应为“上一个操作符的优先级比操作符ch的优先级小,或栈是空的就入栈。”

  3. L(X [0 .. M-1],Y [0 .. N-1])= 1 + L(X [0 .. M-2],Y [0 .. N-1])这个地方也也有笔误
    应改为L(X [0 .. M-1],Y [0 .. N-1])= 1 + L(X [0 .. M-2],Y [0 .. N-2])