代码改变世界

UESTC OJ 1647Battery Charging 模拟题

2012-05-06 15:14  javaspring  阅读(212)  评论(0编辑  收藏  举报

    题意很简单,就是判断在把手机卖出之前最多能玩多少天,能玩手机的前提是要有足够的电量。第i天充电能获得i单元的电量,第i天玩手机需要消耗i单位的电量。

   思路:模拟,能玩的时候就玩,因为数据范围过大,模拟的时候不能一天一天模拟,需要跳跃式模拟。

题目:http://acm.uestc.edu.cn/problem.php?pid=1647

ac代码:

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    int numcase;
    scanf("%d",&numcase);
    for(int i = 1;i <= numcase;++i)
    {
        int m,n;
        scanf("%d%d",&m,&n);
        int sum = 0;
        if(n - m <2)
        {
            sum = 0;
            continue;
        }
        else
        {
            while(m <= n)
            {
                int x = 2 * m + 1 - m - 2;
                m += 2;
                if(n >= m + 2*x + 1)
                {
                    sum += (x + 1);
                    m = m + 2*x + 1;
                }
                else
                {
                    int y = (n - m)/2;
                    sum += (y + 1);
                    break;
                }
            }
        }
        printf("Case #%d: %d\n",i,sum);
    }
    return 0;
}