Untitled
unknown
plain_text
2 years ago
4.4 kB
6
Indexable
package Pizza_Location;
import java.io.FileInputStream;
import java.util.Scanner;
public class pizza_location {
static int k, r, m, n;
static int [][] sol;
static int [][] loc;
static int sumPeople;
static int [] res;
static boolean [][] cntRes;
static boolean [] visit;
static void reset() {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cntRes[i][j] = false;
}
}
for (int i = 0; i < m; i++) {
res[i] = 0;
}
sumPeople = 0;
}
static void check(int a) {
if (a > m) return;
int sum = 0;
for (int i = 0; i < m; i++) {
sum += res[i];
}
if (sum == k) {
int count = 0;
for (int i = 0; i < n; i++) {
visit[i] = false;
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (res[i] == 1 && !visit[j] && cntRes[i][j]) {
count += sol[2][j];
visit[j] = true;
}
}
}
if (sumPeople < count) sumPeople = count;
return;
}
for (int i = 1; i >= 0; i--) {
res[a] = i;
check(a+1);
}
}
public static void main(String[] args) throws Exception{
System.setIn(new FileInputStream("F://eclipse//SRV//src//Pizza_Location//pizza.txt"));
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int test_case = 1; test_case <= T; test_case++) {
k = sc.nextInt();
r = sc.nextInt();
m = sc.nextInt();
res = new int [m+1];
loc = new int [2][m];
for (int i = 0; i < m; i++) {
loc[0][i] = sc.nextInt();
loc[1][i] = sc.nextInt();
}
n = sc.nextInt();
sol = new int [3][n];
visit = new boolean [n];
cntRes = new boolean [m][n];
for (int i = 0; i < n; i++) {
sol[0][i] = sc.nextInt();
sol[1][i] = sc.nextInt();
sol[2][i] = sc.nextInt();
}
reset();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if ((loc[0][i] - sol[0][j]) * (loc[0][i] - sol[0][j])
+ (loc[1][i] - sol[1][j]) * (loc[1][i] - sol[1][j]) <= r * r) {
cntRes[i][j] = true;
}
}
}
check(0);
System.out.println(sumPeople);
}
}
}
package Battle_City;
import java.io.FileInputStream;
import java.util.Scanner;
public class battle_city {
static int MAX_SIZE = 10000;
static int front, rear;
static int [][] queue = new int [2][MAX_SIZE];
static void push(int x, int y) {
if (rear == MAX_SIZE -1) rear = -1;
rear++;
queue[0][rear] = x;
queue[1][rear] = y;
}
static void pop() {
if (front == MAX_SIZE -1) front = -1;
front++;
}
static boolean isEmpty() {
return rear == front;
}
static int m, n;
static int sx, sy, ex, ey;
static char [][] map;
static int [][] visit;
static int [] dx = {0, 1, 0, -1};
static int [] dy = {1, 0, -1, 0};
static int move(int x1, int y1) {
if (map[x1][y1] == 'E' || map[x1][y1] == 'T') return 1;
else if (map[x1][y1] == 'B') return 2;
return 100000;
}
static void bfs (int x, int y) {
push(x, y);
visit[x][y] = 0;
while (!isEmpty()) {
pop();
int q = queue[0][front];
int p = queue[1][front];
for (int i = 0; i < 4; i++) {
int x1 = q + dx[i];
int y1 = p + dy[i];
if (x1 >= 0 && x1 < m && y1 >= 0 && y1 < n) {
int a = move(x1, y1);
if (visit[x1][y1] > visit[q][p] + a) {
visit[x1][y1] = visit[q][p] + a;
push(x1, y1);
}
}
}
}
}
static void reset() {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
visit[i][j] = 100000;
}
}
}
public static void main(String[] args) throws Exception{
System.setIn(new FileInputStream("F://eclipse//SRV//src//Battle_City//battle_city.txt"));
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int test_case = 1; test_case <= T; test_case++) {
rear = front = -1;
m = sc.nextInt();
n = sc.nextInt();
sc.nextLine();
map = new char [m][n];
visit = new int [m][n];
reset();
for (int i = 0; i < m; i++) {
String a = sc.nextLine();
for (int j = 0; j < n; j++) {
map[i][j] = a.charAt(j);
if (map[i][j] == 'Y') {
sx = i;
sy = j;
}
if (map[i][j] == 'T') {
ex = i;
ey = j;
}
}
}
bfs(sx, sy);
if (visit[ex][ey] == 100000) System.out.println(-1);
else System.out.println(visit[ex][ey]);
}
}
}
Editor is loading...