Fork me on GitHub

NYOJ题目168房间安排

------------------------------------------------

 

其实就是计算一下时间线上重叠部分的最大值是多少

一个很容易想到的办法就是模拟,如下

AC代码:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     
 5     public static void main(String[] args) {
 6         
 7         Scanner sc=new Scanner(System.in);
 8         
 9         int times=sc.nextInt();
10         while(times-->0){
11             
12             int n=sc.nextInt();
13             int book[]=new int[10001];
14             for(int i=0;i<n;i++){
15                 int a=sc.nextInt();
16                 int b=sc.nextInt();
17                 int c=sc.nextInt();
18                 while(c>0) book[b+c--]+=a;
19             }
20             int max=Integer.MIN_VALUE;
21             for(int i=1;i<book.length;i++) max=Math.max(max,book[i]);
22             System.out.println(max);
23         }
24         
25     }
26 
27 }

 

题目来源: http://acm.nyist.net/JudgeOnline/problem.php?pid=168

posted @ 2016-09-22 00:27  CC11001100  阅读(203)  评论(0编辑  收藏  举报