第一题AC
public class A{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ int n = in.nextInt(); int m = in.nextInt(); int[][] matrix = new int[n][m]; for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ matrix[i][j] = in.nextInt(); } } int lo = 0, hi = n - 1; int i = lo, j = hi; int flag = 0; while(true){ while(i < j){ if(equalRow(matrix[lo], matrix[hi])){ i++; j--; }else{ i = lo; j = 0; // int[][] ans = new int[hi-lo+1][m]; for(int row = 0;row < hi-lo+1;row++){ for(int col = 0;col < m;col++){ // ans[row][col] = matrix[i][j++]; System.out.print(matrix[i][j++] + " "); } System.out.println(); i++; j = 0; } // for(int row = 0;row < ans.length;row++){ // for(int col = 0;col < m;col++){ // System.out.print(ans[row][col] + " "); // } // System.out.println(); // } flag = 1; } } if(i > j){ i = lo; hi = j; } if(flag == 1) break; } } } public static boolean equalRow(int[] x, int [] y){ for(int i = 0;i < x.length;i++){ if(x[i] != y[i]) return false; } return true; } }
第二题AC
public class A{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ int n = in.nextInt(); int m = in.nextInt(); int k = in.nextInt(); int[] gift = new int[n]; for(int i = 0;i < n;i++){ gift[i] = in.nextInt(); } int count = 0; Stack<Integer> s = new Stack<>(); for(int i = 0;i < n;i++){ if(gift[i] < k){ s.push(i); } } int curMax = n - 1; while(!s.isEmpty()){ int x = s.pop(); if(curMax - x + 1 >= m) count += curMax - x - m + 1; curMax = x - 1; } if(curMax >= m) { count += curMax - m + 2; } System.out.println(count); } } }
第三题45%
第四题55%(难道是没考虑空串?感觉思路很正确)
public class A{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ long count = 1; int n = in.nextInt(); String s = in.next(); if(n == 1){ System.out.println(1); continue; } // 逆时针 for(int i = 1;i < s.length()-1;i++){ char pre = s.charAt(i-1); char cur = s.charAt(i); char next = s.charAt(i+1); // 1. cur 顺时针, pre 逆时针 count += Math.min(pre - 'A', 'Z' - cur); // 2. next 顺时针, cur 逆时针 count += Math.min(next - 'A', 'Z' - cur); } count += Math.min(s.charAt(1) - 'A', 'Z' - s.charAt(0)); count += Math.min(s.charAt(s.length()-2) - 'A', 'Z' - s.charAt(s.length()-1)); System.out.println(count % 998244353); } } }
第五题AC
public class A{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ int n = in.nextInt(); int[][] data = new int[n][3]; for(int i = 0;i < n;i++){ for(int j = 0;j < 2;j++){ data[i][j] = in.nextInt(); } data[i][2] = i+1; // 第几件事情 } Arrays.sort(data, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { if(o1[1] == o2[1]) return o2[0] - o1[0]; return o2[1] - o1[1]; } }); for(int i = 0;i < n;i++) { System.out.print(data[i][2] + " "); } } } }
全部评论
(0) 回帖