第一题:旋转
import java.util.Scanner;
public class Main {
static int N = 300;
static int[][] a = new int[N][N];
static int[][] b = new int[N][N];
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int m = s.nextInt();
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
a[i][j] = s.nextInt();
}
}
for(int i = 1; i <= m; i++) {
for(int j = 1; j <= n; j++) {
b[i][j] = a[n-j+1][i];
}
}
for(int i = 1; i <= m; i++) {
for(int j = 1; j<= n; j++) {
System.out.print(b[i][j] + " ");
}
System.out.println();
}
}
}
第二题:附近最小
第三题:扫地机器人
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
static int N = (int)1e5 + 10;
static int[] a = new int[N];
static int n, k;
static boolean check(int x) {
int s = 0;
for(int i = 1; i <= k; i++) {
if(a[i]-x > s) return false;
if(a[i] <= s) s = a[i] + x - 1;
else s += x;
}
return s >= n;
}
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] s = br.readLine().split(" ");
n = Integer.parseInt(s[0]);
k = Integer.parseInt(s[1]);
for(int i = 1; i <= k; i++) {
a[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(a, 1, k+1);
int l = 0, r = n;
while(l < r) {
int mid = (l + r) >> 1;
if(check(mid)) r = mid;
else l = mid + 1;
}
System.out.println((r-1)*2);
}
}
第四题:窗口