poj 3172 Scales

sb題,DP搞不成,解空間太大了。2的31次方

由於數的個數很少,但是解空間很大,加了個剪紙瞎逼搜就過去了

/*
ID: daniel.20
LANG: JAVA
TASK: tour
 */

import java.util.*;
import java.io.*;

class pb1{
    int n,c;
    int arr[];
    long sum[];
    long max = 0;
    void solver() throws IOException{
        //Scanner scan = new Scanner(System.in);
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(reader.readLine());
        n = Integer.parseInt(st.nextToken());
        c = Integer.parseInt(st.nextToken());
        arr = new int[n+1];
        sum = new long[n+1];
        for(int i=1;i<=n;i++){
            arr[i] = Integer.parseInt(reader.readLine());
            sum[i] = sum[i-1]+arr[i];
        }
        dfs(n,c,0);
        System.out.println(max);
    }
    void dfs(int i, int left, int cur){
        if(left<0) return;
        if(cur>max) max=cur;
        if(i<1) return;

        if(sum[i]<left){
            max = max<cur+sum[i]?cur+sum[i]:max;
            return;
        }
        dfs(i-1,left-arr[i],cur+arr[i]);
        dfs(i-1,left,cur);
    }
}
public class tour {
    public static void main(String[] args) throws Exception {
        pb1 p = new pb1();
        p.solver();        
    }
}
 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章