钓鱼OpenDoorMy
来源:互联网 发布:免费房源采集软件 编辑:程序博客网 时间:2024/04/27 13:37
package work;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class OpenDoorMy {
static int T, N, mind;
static int[] gate;
static int[] peo;
static boolean[] used;
static int[] num;
public static void main(String[] args) throws FileNotFoundException {
/* Scanner sc=new Scanner(System.in); */
Scanner sc = new Scanner(new File("src/Aboat.txt"));
T = sc.nextInt();
for (int t = 0; t < T; t++) {
N = sc.nextInt();
gate = new int[3];
peo = new int[20];
used = new boolean[3];
num = new int[N + 1];
for (int i = 0; i < 3; i++) {
gate[i] = sc.nextInt();
peo[i] = sc.nextInt();
}
mind = 0xfffffff;
dfs(0, 0);
System.out.println(mind);
}
}
private static void dfs(int step, int sum) {
if (step == 3) {
if (mind > sum) {
mind = sum;
}
return;
}
if (sum > mind) {
return;
}
for (int i = 0; i < 3; i++) {
if (!used[i]) {
used[i] = true;
if (i == 0) {
dfs(step + 1, sum + enterleft(i));
init(i);
}
if (i == 1) {
dfs(step + 1, sum + enterleft(i));
init(i);
dfs(step + 1, sum + enterright(i));
init(i);
}
if (i == 2) {
dfs(step + 1, sum + enterright(i));
init(i);
}
used[i] = false;
}
}
}
private static int enterleft(int p) {
int count = 0;
int gatepos = gate[p];
int dis = 0;
for (int i = peo[p]; i > 0;) {
if (gatepos - dis > 0 && num[gatepos - dis] == 0) {
num[gatepos - dis] = -p - 1;
i--;
count += dis + 1;
}
if (i == 0) {
break;
}
if (gatepos + dis <= N && num[gatepos + dis] == 0) {
num[gatepos + dis] = -p - 1;
i--;
count += dis + 1;
}
dis++;
}
return count;
}
private static int enterright(int p) {
int count = 0;
int gatepos = gate[p];
int dis = 0;
for (int i = peo[p]; i >0;) {
if (gatepos + dis <= N && num[gatepos + dis] == 0) {
num[gatepos + dis] = -p - 1;
i--;
count += dis + 1;
}
if (i == 0) {
break;
}
if (gatepos - dis > 0 && num[gatepos - dis] == 0) {
num[gatepos - dis] = -p - 1;
i--;
count += dis + 1;
}
dis++;
}
return count;
}
private static void init(int p) {
for (int i = 1; i < num.length; i++) {
if(num[i]==-p-1){num[i]=0;}
}
}
}
、。input
1
10
4 5
6 2
10 2
、、output
18
- 钓鱼OpenDoorMy
- 钓鱼
- 钓鱼
- 钓鱼
- 钓鱼
- 钓鱼
- 钓鱼
- 钓鱼
- 钓鱼
- 钓鱼
- 钓鱼
- 钓鱼
- 钓鱼记
- 钓鱼记
- 钓鱼记
- 钓鱼记
- 钓鱼记
- 钓鱼记
- 关于lambda表达式在Android Studio中的使用
- 融创150亿投资乐视但不含汽车
- git常用命令
- 第2章 策略模式
- 手动回收ImageVIew的图片资源
- 钓鱼OpenDoorMy
- [00310]矩阵与线性代数运算
- mysql实现汉字转拼音
- 解决 GRE 和 IPSEC 中的 IP 分段、MTU、MSS 和 PMTUD 问题
- I/O Models
- 关于webService调用遇到的问题
- matlab和c++混合编程---方法和步骤
- 微软认知服务-Computer Vision API调用合集
- 小程序图片上传(同步上传)