Untitled

 avatar
unknown
plain_text
20 days ago
2.1 kB
4
Indexable
import java.io.FileInputStream;
import java.util.Scanner;
// PIZZA
public class CanhGac {
	static int T;
	static int k;
	static int r;
	static int m;
    static int[][] posRes = new int[20][2];
    static int n;
    static int[][] posCus = new int[100][3];
    static int result;
    static boolean[][] visitedCus = new boolean[2000][2000];
    
    static void backtrack(int x, int count, int customer) {
    	if (x > m) return;
    	if (count == m) {
    		if (customer > result) result = customer;
    		return;
    	}
    	
    	/// chon
    	/// ban kinh = r
    	/// xCuahang = posRes[x][0]
    	/// yCuahang = posRes[x][1]
    	int total = 0;
    	int[][] cusTrue = new int[100][2];
    	int len = 0;
    	for (int i = 0; i < n; i++) {
    		 if (Math.pow((posRes[x][0] - posCus[i][0]), 2) + Math.pow((posRes[x][1] - posCus[i][1]), 2) <= r*r && !visitedCus[posCus[i][0]][posCus[i][1]]) {
    			 visitedCus[posCus[i][0]][posCus[i][1]] = true;
    			 total += posCus[i][2];
    			 cusTrue[len][0] = posCus[i][0];
    			 cusTrue[len][1] = posCus[i][1];
    			 len++;
    		 }
    	}
    	backtrack(x+1, count + 1, customer + total);
    	for (int i = 0; i < len; i++) {
   			 visitedCus[cusTrue[i][0]][cusTrue[i][1]] = false;
   		 
    	}
    	
    	/// ko chon
    	backtrack(x+1, count, customer);
    }

    public static void main(String[] args) throws Exception {
        System.setIn(new FileInputStream("src/input.txt"));
        Scanner sc = new Scanner(System.in);
        T = sc.nextInt();
        
        for (int tc = 1; tc <= T; tc++) {
            k = sc.nextInt();
            r = sc.nextInt();
            m = sc.nextInt();
            for (int i = 0; i < m; i++) {
            	posRes[i][0] = sc.nextInt() + 1000;
            	posRes[i][1] = sc.nextInt() + 1000;
            }
            n = sc.nextInt();
            for (int i = 0; i < n; i++) {
            	posCus[i][0] = sc.nextInt() + 1000;
            	posCus[i][1] = sc.nextInt() + 1000;
            	posCus[i][2] = sc.nextInt();
            }
            backtrack(0, 0, 0);
            System.out.println(result);
        }
        sc.close();
    }
}
Editor is loading...
Leave a Comment