http://codeforces.com/problemset/problem/545/D
题意:n个数的服务请求数组,求在其服务时间内,最大的可满足服务的请求数量
首先对服务请求数组按照从小到大排序。
下面判断其服务时间t 与 前面服务时间之和sum的关系
若 t《 sum : 等待服务数+1
若t>sum : 说明在服务待时间t内能够被服务。已经服务的时间sum+改请求的时间t 就是新的已经服务的时间和
注意: sum是满足条件的服务时间和
Java程序:
import java.util.Arrays; import java.util.Scanner; public class D545 { /** * @param args */ static void run(){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] t = new int[n]; int sum = 0; int count = 0; for(int i=0;i<n;i++){ t[i] = sc.nextInt(); } Arrays.sort(t); for(int i=0;i<n;i++){ if(sum>t[i]) count++; else sum+=t[i]; // System.out.print(sum+" "); } System.out.println(n-count); } public static void main(String[] args) { // TODO Auto-generated method stub run(); } }
Python程序:
n = raw_input() t = map(int,raw_input().split()) count = 0 sum = 0 for ti in sorted(t): if sum<= ti: count += 1 sum += ti print count