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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值