| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
先判 时间, 再判 结果In Reply To:天哪,这样都不wa,是不是judge出问题拉。 Posted by:Iambitious at 2006-03-27 20:46:01 > import java.io.FileNotFoundException;
> import java.io.FileReader;
> import java.util.Arrays;
> import java.util.Scanner;
> public class Main {
>
> /**
> * @param args
> */
> static int[] stick;
> static int n;
> static int max;
> static int min;
> public static void main(String[] args) throws FileNotFoundException {
> // TODO Auto-generated method stub
> Scanner in = new Scanner(System.in);
> n = in.nextInt();
> while(n != 0){
> stick = new int[n];
> int sum = 0;
> max = -1;
> min = 51;
> for(int i = 0; i < n; i++){
> stick[i] = in.nextInt();
> sum += stick[i];
> max = Math.max(max, stick[i]);
> min = Math.min(min, stick[i]);
> }
> System.out.println("不是吧");//请看这个地方,这样都TLE
> Arrays.sort(stick);
> for(int average = 1; average <= sum; average++){
> if(sum % average == 0){
> if(max > average || (max < average && max + min > average))
> continue;
> int[] state = new int[sum / average];
> if(ok(state, sum / average, 0, average)){
> System.out.println(average);
> break;
> }
> }
> }
> n = in.nextInt();
> }
> }
> public static boolean ok(int[] state, int count, int index, int average){
> boolean res = false;
> if(index == n)
> return true;
> for(int i = 0; i < count; i++){
> if(state[i] + stick[index] <= average){
> if(state[i] + min > average)
> return false;
> state[i] += stick[index];
> if(ok(state, count, index + 1, average)){
> res = true;
> break;
> }
> else{
> state[i] -= stick[index];
> }
> }
> if(state[i] == 0){
> break;
> }
> }
> return res;
> }
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator