加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

POJ PKU 2673 模拟

(2010-04-22 18:11:55)
标签:

poj

pku

2673

it

分类: 杂题

题目描述:一个人有t秒时间,每秒能干x量的工作。有m只动物,开始时,第i只动物离人有di的距离,它的速度是si每秒。只要人干活,动物就朝人走,如果不干活,动物就原路返回。

要求动物不能达到人,问人最多能干多少工作。

解题报告:

首先得到最先到达人的动物的时间,记下这个时间减一记作re,所以人第一次停止工作是在re 1秒的时候。

所以,如果re == 0,工作量只能是0.

如果re >= t,那人就不用停止工作,工作量最大:t * x。

最后,re < t,首先人能工作re的时间,剩下的时间可以认为休息1秒(同时动物往回跑一秒),然后工作一秒,所以剩下的时间平分就是工作时间。答案 (re (t - re) / 2) * x

代码如下:

#include<iostream>
using namespace std;
int t, x, m, d, s, re;
int main()
{
    scanf("%d%d%d", &t, &x, &m);
    re = 100000000;
    while(m--)
    {
        scanf("%d%d", &d, &s);
        int temp = (d - 1) / s;
        if (temp < re) re = temp;
    }
    if (re < 1) printf("0\n");
    else if (re >= t) printf("%d\n", t * x);
    else printf("%d\n", (re (t - re) / 2) * x);
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有