Untitled
unknown
plain_text
2 years ago
1.7 kB
5
Indexable
#include<iostream> using namespace std; int K, R, M, N; int a[20][2]; bool visited[20]; int toado[100][3]; int mang[20][100]; int visitGH[100]; int answer = 0; int X[10]; bool checkKC(int x1, int y1, int x2, int y2) { if((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2) > R*R) { return false; } return true; } int tinhN(int x) { int soN = 0; for(int i = 0; i < N; i++) { if(mang[x][i] == 1 && visitGH[i] == 0) { soN += toado[i][2]; visitGH[i]++; } else if(mang[x][i] == 1 && visitGH[i] != 0) { visitGH[i]++; } } return soN; } void resetGH (int x) { for(int i = 0; i < N; i++) { if(mang[x][i] == 1) { visitGH[i]--; } } } void reset() { for(int i = 0; i < M; i++) { for(int j = 0; j < N; j++) { mang[i][j] = 0; } visitGH[i] = 0; visited[i] = false; } } void BT(int k, int sum, int index) { if(k == K) { if(answer < sum) { answer = sum; } return; } for(int i = index; i < M; i++) { if(!visited[i]) { visited[i] = true; BT(k + 1, sum + tinhN(i), i); resetGH(i); visited[i] = false; } } } int main() { //freopen("input.txt", "r", stdin); int T; cin>>T; for(int tc = 1; tc <= T; tc++) { cin>>K>>R>>M; for(int i = 0; i < M; i++) { cin>>a[i][0]>>a[i][1]; } cin>>N; reset(); for(int i = 0; i < N; i++) { cin>>toado[i][0]>>toado[i][1]>>toado[i][2]; } for(int i = 0; i < M; i++) { for(int j = 0; j < N; j++) { if(checkKC(a[i][0], a[i][1], toado[j][0], toado[j][1])) { mang[i][j] = 1; } } } answer = 0; BT(0, 0, 0); cout<<"#"<<tc<<" "<<answer<<endl; } return 0; }
Editor is loading...