首页 > 专题系列 > Java解POJ > POJ 2673 Kicc Wants to Move a Mountain! [解题报告] Java
2013
11-11

POJ 2673 Kicc Wants to Move a Mountain! [解题报告] Java

Kicc Wants to Move a Mountain!

问题描述 :

There is a huge mountain outside Kicc’s house, and Kicc has to climb the mountain every time he wants to go out. It costs him a lot of time and he wants to change the situation. Yes, he figures out a good idea – to move the mountain away! But there is a problem. There are some wild animals not too far away from the mountain. Kicc will make noises when digging or moving the stones. If the animals hear the sound made by Kicc, they will come closer. If an animal reaches the mountain and sees Kicc, the animal will eat Kicc immediately. But the animals are stupid – when they do not hear the sound, they will go back along the exact route they come to the mountain until they are in the place where they start. When they hear the sound again, they will come to the mountain again no matter where they are. In this situation, Kicc has to stop sometimes before the first animal arrives to avoid being eaten. You should notice that as soon as the animal arrive in the mountain, Kicc will be eaten, no matter he stops his work or not.

Kicc has t units of time per day and he can handle x units of stones in one unit of time (This action will make noises). There are m animals near the mountain. The i-th animal stays away the mountain with di units of distance and can run si units of distance in one of unit time. Kicc wants to know the most amount of stones he can handle every day (You can assume the amount of the stones in the mountain is infinite). To make it easier, you may assume that Kicc can work or rest for only integer units of time, for example, 1 unit of time, or 2 units of time, or 3 units of time, and so on.

输入:

The first line contains an integer t (0 <= t < 1000000), and an integer x (0 < x < 10). The second line contains a single integer m (0 <= m < 1000). There are m lines following the second line, each has 2 integers di (0 < di < 1000000) and si (0 < si < 1000000).

输出:

The output should contain a single integer which means the most amount of stones Kicc can move away in one day.

样例输入:

100 5
2
1000 5
100 1

样例输出:

495

解题代码:

/* @author: */
import java.util.Scanner;
import java.util.Arrays;
public class Main{

 public static void main(String args[])
{
 Scanner sc=new Scanner(System.in);
 
 int total,per,t,max;
 total=sc.nextInt();
 per=sc.nextInt();
 t=sc.nextInt();
 max=total;
 while((t--)!=0)
 {
   int dis,speed,fir,sum;
   dis=sc.nextInt();
   speed=sc.nextInt();
   if(speed==0) continue;
   if(speed>=dis) max=0;
   fir=dis/speed;
   if(dis%speed==0) fir--;
   sum=fir+(total-fir)/2;
   if(sum< max) max=sum;
  }
  System.out.printf("%d",max*per);
 }
}