SRM 814 Div 1 ElectionFraudDiv1(250pt)

2012/6/3

TopCoderSRM 814 Div One 250pt

给定若干人的选举得到的比率,求总投票人数的最小值

近似,精度

大意:对于一定的人数,根据“四舍五入”的规则,可以有一定的人数的范围,,注意前者要和0取较大值,一般程序中为枚举n<1000

问题:总的枚举的人数的上限是多少?

嘉哥说明了一个方向,如果能够证明对于n>1000存在的解,肯定可以通过n<1000,来得到,那么确实只要枚举n<1000的就可以了。

1/3

class ElectionFraudDiv1
{
public:
double max(double a, double b) {
    if (a > b) return a; else return b;
}
int MinimumVoters(vector <int> percentages)
{
    bool flag;
    int t, sa, sb, a, b;

    for (t = 1; t <= 10000; t++) {
        flag = true;
        sa = sb = 0;
        EACH(p, percentages) {
            a = int(max(0,ceil(t*(*p-0.5)/100)));
            b = int(ceil(t*(*p+0.5)/100)-1);
            if (a > b) { flag = false; break; }
            sa += a; sb += b;
        }
        if (flag && sa <= t && t <= sb) return t;
    }
    return -1;
}


你可能感兴趣的:(SRM 814 Div 1 ElectionFraudDiv1(250pt))