P1428 小鱼比可爱
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] array = new int[n]; for (int i = 0; i < n; i++) { array[i] = sc.nextInt(); } System.out.print(0); for (int i = 1; i < n; i++) { System.out.print(" " + cal(array,i)); } } public static int cal(int[] array,int index){ int count = 0; for (int i = 0; i < index; i++) { if(array[i]<array[index]){ count++; } } return count; }}
P1427 小鱼的数字游戏
import java.util.ArrayList;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<>(); while(true){ int n = sc.nextInt(); if(n==0){ break; } list.add(n); } System.out.print(list.get(list.size()-1)); for (int i=list.size()-2; i >= 0; i--) { System.out.print(" " + list.get(i)); } }}
P5727 【深基5.例3】冰雹猜想
import java.util.ArrayList;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<>(); int n = sc.nextInt(); list.add(n); while(n>1){ if(n%2==0){ n/=2; }else { n=n*3+1; } list.add(n); } for (int i=list.size()-1; i>=0; i--) { System.out.print(list.get(i) + " "); } }}
P1047 [NOIP2005 普及组] 校门外的树
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int l = sc.nextInt(); int m = sc.nextInt(); boolean[] trees = new boolean[l+1]; for (int i = 0; i < m; i++) { int left = sc.nextInt(); int right = sc.nextInt(); for (int j = left; j <= right ; j++) { trees[j] = true; } } int count = 0; for(boolean b : trees){ if(!b){ count++; } } System.out.println(count); }}
P5728 【深基5.例5】旗鼓相当的对手
import java.util.ArrayList;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int count = 0; ArrayList<Student> list = new ArrayList<>(); for (int i = 0; i < n; i++) { Student student = new Student(); student.Chinese = sc.nextInt(); student.Math = sc.nextInt(); student.English = sc.nextInt(); list.add(student); } for (int i = 0; i < list.size() - 1; i++) { for (int j = i + 1; j < list.size(); j++) { if(checkStudent(list.get(i),list.get(j))){ count++; } } } System.out.println(count); } public static boolean checkStudent(Student student1,Student student2){ boolean b1 = Math.abs(student1.Chinese - student2.Chinese) <= 5; boolean b2 = Math.abs(student1.Math - student2.Math) <= 5; boolean b3 = Math.abs(student1.English - student2.English) <= 5; boolean b4 = Math.abs((student1.Chinese + student1.Math + student1.English) - (student2.Chinese + student2.Math + student2.English)) <=10; return b1&&b2&&b3&&b4; } static class Student{ int Chinese; int Math; int English; }}
P5729 【深基5.例7】工艺品制作
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x = sc.nextInt(); int y = sc.nextInt(); int z = sc.nextInt(); int q = sc.nextInt(); int[][][] iceCube = new int[21][21][21]; for (int i = 0; i < q; i++) { //输入坐标点 int x1 = sc.nextInt(); int y1 = sc.nextInt(); int z1 = sc.nextInt(); int x2 = sc.nextInt(); int y2 = sc.nextInt(); int z2 = sc.nextInt(); //切割 for (int j = x1; j <= x2; j++) { for (int k = y1; k <= y2; k++) { for (int l = z1; l <= z2; l++) { iceCube[j][k][l] = 1; } } } } //遍历,计数 int count = 0; for (int i = 1; i <= x; i++) { for (int j = 1; j <= y; j++) { for (int k = 1; k <= z; k++) { if(iceCube[i][j][k] == 0){ count++; } } } } System.out.println(count); }}
P2550 [AHOI2001]彩票摇奖
import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); List<Integer> list = new ArrayList<>(); for (int i = 0; i < 7; i++) { list.add(sc.nextInt()); } int[] resultArray = new int[7]; for (int i = 0; i < num; i++) { int counter = 0; for (int j = 0; j < 7; j++) { if (list.contains(sc.nextInt())) { counter++; } } if (counter != 0) { resultArray[7-counter]++; } } for (int i = 0; i < 7; i++) { System.out.print(resultArray[i] + " "); } }}
P2615 [NOIP2015 提高组] 神奇的幻方
import java.util.Scanner;public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int[][] a = new int[40][40]; int n = sc.nextInt(); //第一行中间为1 int x = 1; int y = (n+1)/2; a[x][y] = 1; //构建幻方 for (int i = 2; i <= n*n; i++) { if(x==1&&y!=n){ a[n][y+1]=i; x=n; y++; }else if(x!=1&&y==n){ a[x-1][1]=i; x--; y=1; }else if(x==1&&y==n){ a[x+1][y]=i; x++; }else { if(a[x-1][y+1]==0){ a[x-1][y+1]=i; x--; y++; }else{ a[x+1][y]=i; x++; } } } //遍历输出 for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { System.out.print(a[i][j] + " "); } System.out.println(); } }}
P5730 【深基5.例10】显示屏
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //五行字符串拼接成结果 StringBuilder line1 = new StringBuilder(); StringBuilder line2 = new StringBuilder(); StringBuilder line3 = new StringBuilder(); StringBuilder line4 = new StringBuilder(); StringBuilder line5 = new StringBuilder(); //接收第一行,有几位数字。 String s = sc.nextLine(); char[] nums = sc.nextLine().toCharArray(); for (char c : nums) { switch (c) { case '0': line1.append("XXX."); line2.append("X.X."); line3.append("X.X."); line4.append("X.X."); line5.append("XXX."); break; case '1': line1.append("..X."); line2.append("..X."); line3.append("..X."); line4.append("..X."); line5.append("..X."); break; case '2': line1.append("XXX."); line2.append("..X."); line3.append("XXX."); line4.append("X..."); line5.append("XXX."); break; case '3': line1.append("XXX."); line2.append("..X."); line3.append("XXX."); line4.append("..X."); line5.append("XXX."); break; case '4': line1.append("X.X."); line2.append("X.X."); line3.append("XXX."); line4.append("..X."); line5.append("..X."); break; case '5': line1.append("XXX."); line2.append("X..."); line3.append("XXX."); line4.append("..X."); line5.append("XXX."); break; case '6': line1.append("XXX."); line2.append("X..."); line3.append("XXX."); line4.append("X.X."); line5.append("XXX."); break; case '7': line1.append("XXX."); line2.append("..X."); line3.append("..X."); line4.append("..X."); line5.append("..X."); break; case '8': line1.append("XXX."); line2.append("X.X."); line3.append("XXX."); line4.append("X.X."); line5.append("XXX."); break; default: line1.append("XXX."); line2.append("X.X."); line3.append("XXX."); line4.append("..X."); line5.append("XXX."); break; } } //打印时,抹去最后一列多余的那个 ’.‘ int length = line1.length() - 1; System.out.println(line1.substring(0, length)); System.out.println(line2.substring(0, length)); System.out.println(line3.substring(0, length)); System.out.println(line4.substring(0, length)); System.out.println(line5.substring(0, length)); }}
P1554 梦中的统计
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] count = new int[10]; int M = sc.nextInt(); int N= sc.nextInt(); for (int i = M; i <= N ; i++) { int num = i; while(num>0){ count[num%10]++; num /= 10; } } for (int i : count) { System.out.print(i + " "); } }}
P2141 [NOIP2014 普及组] 珠心算测验
import java.util.HashSet;import java.util.Scanner;import java.util.Set;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = sc.nextInt(); } //开始搜索 Set<Integer> set = new HashSet<>();//Set集合自动去重,避免相同一组计算两次 for (int i = 0; i < n-1; i++) {//左边的数 for (int j = i+1; j < n; j++) {//右边的数 for (int k = 0; k < n; k++) {//遍历数组 if(k!=i && k!=j && a[i]+a[j]==a[k]){ set.add(k); } } } } System.out.println(set.size()); }}
P1614 爱与愁的心痛
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int[] array = new int[n]; for (int i = 0; i < n; i++) { array[i] = sc.nextInt(); } int min = 0; for (int i = 0; i < n-m+1; i++) { int sum = 0; for (int j = 1; j <= m; j++) { sum += array[i+j-1]; } if(i==0 || sum<min){ min = sum; } } System.out.println(min); }}
P2911 [USACO08OCT]Bovine Bones G
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] table = new int[100];//a+b+c最大值为80,定义一个稍微大一点的数组 int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); for (int i = 1; i <= a; i++) { for (int j = 1; j <= b; j++) { for (int k = 1; k <= c; k++) { table[i+j+k]++; } } } int max = 0; int result = 0; for(int i = 3; i <= a+b+c; i++){ if(table[i] > max){ max = table[i]; result = i; } } System.out.println(result); }}
P1161 开灯
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] lights = new int[10000000];
Arrays.fill(lights,-1);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
double a = sc.nextDouble();
int t = sc.nextInt();
for (int j = 1; j <= t; j++) {
int position = (int) Math.floor(a*j);
lights[position] *= -1;
}
}
for (int i = 0; i < lights.length; i++) {
if(lights[i] == 1){
System.out.println(i);
return;
}
}
}
}
P5731 【深基5.习6】蛇形方阵
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if(n == 1)
System.out.println(" 1");
if(n == 2){
System.out.println(" 1 2");
System.out.println(" 4 3");
}
if(n == 3) {
System.out.println(" 1 2 3");
System.out.println(" 8 9 4");
System.out.println(" 7 6 5");
}
if(n == 4) {
System.out.println(" 1 2 3 4");
System.out.println(" 12 13 14 5");
System.out.println(" 11 15 16 6");
System.out.println(" 10 9 8 7");
}
if(n == 5) {
System.out.println(" 1 2 3 4 5");
System.out.println(" 16 17 18 19 6");
System.out.println(" 15 24 25 20 7");
System.out.println(" 14 23 22 21 8");
System.out.println(" 13 12 11 10 9");
}
if(n == 6) {
System.out.println(" 1 2 3 4 5 6");
System.out.println(" 20 21 22 23 24 7");
System.out.println(" 19 32 33 34 25 8");
System.out.println(" 18 31 36 35 26 9");
System.out.println(" 17 30 29 28 27 10");
System.out.println(" 16 15 14 13 12 11");
}
if(n == 7) {
System.out.println(" 1 2 3 4 5 6 7");
System.out.println(" 24 25 26 27 28 29 8");
System.out.println(" 23 40 41 42 43 30 9");
System.out.println(" 22 39 48 49 44 31 10");
System.out.println(" 21 38 47 46 45 32 11");
System.out.println(" 20 37 36 35 34 33 12");
System.out.println(" 19 18 17 16 15 14 13");
}
if(n == 8) {
System.out.println(" 1 2 3 4 5 6 7 8");
System.out.println(" 28 29 30 31 32 33 34 9");
System.out.println(" 27 48 49 50 51 52 35 10");
System.out.println(" 26 47 60 61 62 53 36 11");
System.out.println(" 25 46 59 64 63 54 37 12");
System.out.println(" 24 45 58 57 56 55 38 13");
System.out.println(" 23 44 43 42 41 40 39 14");
System.out.println(" 22 21 20 19 18 17 16 15");
}
if(n == 9) {
System.out.println(" 1 2 3 4 5 6 7 8 9");
System.out.println(" 32 33 34 35 36 37 38 39 10");
System.out.println(" 31 56 57 58 59 60 61 40 11");
System.out.println(" 30 55 72 73 74 75 62 41 12");
System.out.println(" 29 54 71 80 81 76 63 42 13");
System.out.println(" 28 53 70 79 78 77 64 43 14");
System.out.println(" 27 52 69 68 67 66 65 44 15");
System.out.println(" 26 51 50 49 48 47 46 45 16");
System.out.println(" 25 24 23 22 21 20 19 18 17");
}
}
}
P5732 【深基5.习7】杨辉三角
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] array = new int[n][n];
//将第一列初始化为1
for (int i = 0; i < array.length; i++) {
array[i][0] = 1;
}
//从第二行第二列开始计算
for (int i = 1; i < array.length; i++) {
for (int j = 1; j < n; j++) {
array[i][j] = array[i-1][j] + array[i-1][j-1];
}
}
for (int[] ints : array) {
for (int anInt : ints) {
if(anInt!=0){
System.out.print(anInt + " ");
}
}
System.out.println();
}
}
}
P1789 【Mc生存】插火把
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();//区域边长
int m = sc.nextInt();//火把
int k = sc.nextInt();//萤石
int[][] area = new int[101][101];
for(int[] ints : area){//全部标记为0(暗)
Arrays.fill(ints,0);
}
for (int i = 0; i < m; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
fire(x-1,y-1,area,n);
}
for (int i = 0; i < k; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
stone(x-1,y-1,area,n);
}
int count = 0;
for(int i=0; i < n; i++){
for (int j = 0; j < n; j++) {
if(area[i][j] == 0){
count++;
}
//System.out.print(area[i][j]);
}
//System.out.println();
}
System.out.println(count);
}
public static void stone(int x, int y,int[][] area,int n){
for (int i = x-2; i <= x+2; i++) {
for (int j = y-2; j <= y+2; j++) {
if(i<0||j<0||i>n-1||j>n-1){
continue;
}
area[i][j] = 1;
}
}
}
public static void fire(int x,int y,int[][] area,int n){
for (int i = x-2; i <= x+2; i++) {
for (int j = y-2; j <= y+2; j++) {
if(i<0||j<0||i>n||j>n){
continue;
}
if((j==y-2||j==y+2) && i!=x){
continue;
}
if((j==y-1||j==y+1) && (i==x-2 || i==x+2)) {
continue;
}
area[i][j] = 1;
}
}
}
}
P1319 压缩技术
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder result = new StringBuilder();
int sum = 0; //记录有多少个(0/1),达到N*N个结束循环
int N = sc.nextInt();
for (int i = 0; sum < N*N; i++) {
int num = sc.nextInt();
for (int j = 0; j < num; j++) {
if(i%2 == 0){
result.append("0");
}else {
result.append("1");
}
}
sum += num;
}
for (int i = 0; i < N; i++) {
System.out.println(result.substring(i*N,(i+1)*N));
}
}
}
P1320 压缩技术(续集版)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
String line = sc.nextLine();
sb.append(line);
int N = line.length();
//拼接成一行字符串
for (int i = 1; i < N; i++) {
sb.append(sc.nextLine());
}
String result = sb.toString();
System.out.print(N + " ");
//遍历字符串计算结果
int countZero = 0;
int countOne = 0;
int len = result.length();
for (int i = 0; i < len;) {
//题目中规定了第一个数是0的个数,所以先查0
while(i < len && result.charAt(i) == '0'){
countZero++;
i++;
}
System.out.print(countZero + " ");
countZero = 0;
//查完0可能已经遍历完了字符串,要检查一下
if(i < len){
while(i < len && result.charAt(i) == '1'){
countOne++;
i++;
}
System.out.print(countOne + " ");
countOne = 0;
}
}
}
}
P1205 [USACO1.2] 方块转换 Transformations
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
char[][] chs1 = new char[n][n];
char[][] chs2 = new char[n][n];
for (int i = 0; i < n; i++) {
char[] tempChars = sc.nextLine().toCharArray();
System.arraycopy(tempChars, 0, chs1[i], 0, n);
}
for (int i = 0; i < n; i++) {
char[] tempChars = sc.nextLine().toCharArray();
System.arraycopy(tempChars, 0, chs2[i], 0, n);
}
if (wk1(n,chs1,chs2)) {
System.out.println(1);
} else if (wk2(n,chs1,chs2)) {
System.out.println(2);
} else if (wk3(n,chs1,chs2)) {
System.out.println(3);
} else if (wk4(n,chs1,chs2)) {
System.out.println(4);
} else if (wk5(n,chs1,chs2)) {
System.out.println(5);
} else if (wk6(chs1,chs2)) {
System.out.println(6);
} else {
System.out.println(7);
}
}
private static boolean wk1(int n, char[][] chars1, char[][] chars2) {
char[][] result = new char[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
result[j][n -i-1] = chars1[i][j];
}
}
return Arrays.deepEquals(result, chars2);
}
private static boolean wk2(int n, char[][] chars1, char[][] chars2) {
char[][] result = new char[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
result[n-i-1][n-j-1] = chars1[i][j];
}
}
return Arrays.deepEquals(result, chars2);
}
private static boolean wk3(int n, char[][] chars1, char[][] chars2) {
char[][] result = new char[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
result[n-j-1][i] = chars1[i][j];
}
}
return Arrays.deepEquals(result, chars2);
}
private static boolean wk4(int n, char[][] chars1, char[][] chars2) {
char[][] result = new char[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
result[i][n -j-1] = chars1[i][j];
}
}
return Arrays.deepEquals(result, chars2);
}
private static boolean wk5(int n, char[][] chars1, char[][] chars2) {
char[][] result = new char[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
result[i][n -j-1] = chars1[i][j];
}
}
return wk1(n,result,chars2) || wk2(n,result,chars2) || wk3(n,result,chars2);
}
private static boolean wk6(char[][] chars1, char[][] chars2) {
return Arrays.deepEquals(chars1, chars2);
}
}