USACO Combination Lock

偶尔重抄旧业嘛

大意是给一个范围N,然后A和B会从1<=x<=N 中分别选出A1,A2,A3,B1,B2,B3;求有多少组3位数(C1,C2,C3),满足A或者B中三位数一一对应位相差 <=2,注意数排列是一个环,像钟表走时一样。

可以直接遍历剪枝:

Version:1.0StartHTML:0000000128EndHTML:0000015312StartFragment:0000000128EndFragment:0000015312SourceURL:about:blank

/*

ID: wanglan1

LANG: JAVA

TASK: combo

*/

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.FileReader;

importjava.io.FileWriter;

importjava.io.IOException;

importjava.io.PrintWriter;

public classcombo {

public static voidmain(String args[])throwsIOException {

BufferedReader f =newBufferedReader(newFileReader("combo.in"));

PrintWriter out =newPrintWriter(newBufferedWriter(newFileWriter("combo.out")));

intlen = Integer.valueOf(f.readLine());

String[] ssA = f.readLine().trim().split(" ");

String[] ssB = f.readLine().trim().split(" ");

f.close();

int[] a = {Integer.valueOf(ssA[0]),Integer.valueOf(ssA[1]),Integer.valueOf(ssA[2])};

int[] b = {Integer.valueOf(ssB[0]),Integer.valueOf(ssB[1]),Integer.valueOf(ssB[2])};

intcount =0,maxA,maxB,minA,minB;

for(inti =1;i <= len;i++) {

booleanAA00 =false,BB00 =false;

BB00 =false;

maxA =max(i,a[0]);

minA =min(i,a[0]);

maxB =max(i,b[0]);

minB =min(i,b[0]);

if(isCan(maxA,minA,len))

AA00 =true;

if(isCan(maxB,minB,len))

BB00 =true;

if(AA00 || BB00)

for(intj =1;j <= len;j++) {

booleanAA11 =false,BB11 =false;

maxA =max(j,a[1]);

minA =min(j,a[1]);

maxB =max(j,b[1]);

minB =min(j,b[1]);

if(AA00 &&isCan(maxA,minA,len))

AA11 =true;

if(BB00 &&isCan(maxB,minB,len))

BB11 =true;

if(AA11 || BB11)

for(intk =1;k <= len;k++) {

maxA =max(k,a[2]);

minA =min(k,a[2]);

maxB =max(k,b[2]);

minB =min(k,b[2]);

if(AA00 && AA11 &&isCan(maxA,minA,len) || BB00 && BB11 &&isCan(maxB,minB,len)) {

count++;

}

}

}

}

out.println(count);

out.close();

}

private static intmax(inta, intb) {

returna > b ? a : b;

}

private static intmin(inta, intb) {

returna > b ? b : a;

}

private static booleanisCan(inta, intb, intlen) {

if(a -2<= b || (a +2- len >= b))

return true;

return false;

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,256评论 19 139
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,792评论 0 33
  • 贪心算法 贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上...
    fredal阅读 9,314评论 3 52
  • 文/一碗白开水 爱与被爱的区别大概是遇到好玩的东西拍了小视频,你第一个是想发朋友圈,而我是想分享给你。 -1- 朋...
    一碗白开水阅读 4,393评论 0 0