牛客编程巅峰赛S1第10场 - 青铜&白银
答案代码有吗?一起交流一下呀,第一次搞这个。我写下我的代码吧,第一题大家肯定都会
public int Mostvictories (int n, int p1, int q1, int m1, int p2, int q2, int m2) { return Math.min(p1,q2)+Math.min(q1,m2)+Math.min(m1,p2); }
第二题牛课里面超时了,我自己编译器好像没什么问题,有大佬解释一下吗?
public class Nk02 { public static void main(String[] args) { int n = 2; int [] arr = {10,10}; System.out.println(solve(n, arr)); } public static int solve (int n, int[] a) { if(n <= 0) { return 0; } int flag = 1; while(true) { if(a[flag-1] <= 0){ return flag; }else{ flag = flag%n+1; for (int i = 0; i < n; i++) { a[i]--; } } } } }第三题通过75%,有什么特殊情况没考虑到吗?
public class Nk03 { public static void main(String[] args) { int i = Highestscore(3, 3, 0, 0, 0, 0, 3); // int i = Highestscore(6,2,2,2,2,2,2); System.out.println(i); } public static int Highestscore (int n, int p1, int q1, int m1, int p2, int q2, int m2) { int win = Math.min(p1,q2)+Math.min(q1,m2)+Math.min(m1,p2); int x = p1<q2?q2-p1:p1-q2; int y = q1<m2?m2-q1:q1-m2; int z = m1<p2?p2-m1:m1-p2; int max = Math.max(x,Math.max(y,z)); if (max == x) { return win-y; }else if(max == y){ return win - z; }else { return win-x; } } }