猜数 题解
猜数
https://ac.nowcoder.com/acm/contest/5389/B
思路:贪心
一般最多最少问题有可能涉及到贪心。
因为这些数字和是>=m的,所以我们把这些数字从大到小排序。
然后每次都把最小的变成最大的数字也就是说9,这样的话改从次数最少。
代码如下。
import java.util.*; import java.math.*; import java.io.IOException; import java.io.InputStreamReader; import java.io.StreamTokenizer; import java.io.OutputStreamWriter; import java.io.BufferedReader; import java.io.PrintWriter; public class Main { public static void main(String args[])throws IOException { StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); in.nextToken(); int n = (int)in.nval; in.nextToken(); int m = (int)in.nval; long v[] = new long[n]; int sum=0,max=0; for(int i=0;i<n;i++) { in.nextToken(); v[i] = (int)in.nval; sum+=v[i]; } Arrays.sort(v); int p=0; while(sum<m) { sum+=9-v[p]; p++; max++; } out.println(max); out.flush(); } }