只做出來(ACDFGH),挑幾個出來,答案不一定正確,但自己測試通過了
A、求和
求1~20230408的和
public class Main{
public static void main(String[] args) {
System.out.println((long)20230409*10115204);
}
}
這里就直接套等差數(shù)列的求和公式,答案:204634714038436
?文章來源地址http://www.zghlxwxcb.cn/news/detail-426087.html
D、平均
【問題描述】
????????有一個長度為n的數(shù)組(n是10的倍數(shù)),每個數(shù) Ai 都是區(qū)間[0,9]中的整數(shù),小明發(fā)現(xiàn)數(shù)組里每種數(shù)出現(xiàn)的次數(shù)不太平均,而更改第 i 個數(shù)的代價為bi,他想更改著若干個數(shù)的值使得這 10 種數(shù)出現(xiàn)的次數(shù)相等(都等于n/10,請問代價和最少為多少。
【輸入格式】
????????輸入的第一行包含一個正整數(shù) n。
????????接下來n行,第i行包含兩個整數(shù)ai,bi,用一個空格分隔。
【輸出格式】
????????輸出一行包含一個正整數(shù)表示答案。
【樣例輸入】
10
1 1
1 2
1 3
2 4
2 5
2 6
3 7
3 8
3 9
4 10
【樣例輸出】
????????27
【樣例說明】
????????只更改第 1,2,4,5.7,8 個數(shù),需要花費(fèi)代價 1+2+4+5+7+8=27。
【評測用例規(guī)模與約定】
????????對于20%的評測用例,n<=1000;
????????對于所有評測用例n <= 100000,0<bi<=2×10^5。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.*;
public class Main {
private static final StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
public static void main(String[] args) throws IOException {
int n = next();
List<Queue<Integer>> list = new ArrayList<>(10);
for (int i = 0; i < 10; i++) {
list.add(new PriorityQueue());
}
for (int i = 1; i <= n; i++) {
int a = next();
int b = next();
list.get(a).offer(b);
}
int count = 0;
n /= 10;
for (int i = 0; i < 10; i++) {
Queue<Integer> queue = list.get(i);
if (queue.size() <= n)
continue;
for (int j = 0; j <= queue.size() - n; j++) {
count += queue.poll();
}
}
System.out.println(count);
}
private static int next() throws IOException {
st.nextToken();
return (int) st.nval;
}
}
?文章來源:http://www.zghlxwxcb.cn/news/detail-426087.html
F、棋盤
【問題描述】
????????小藍(lán)擁有 n ×?n 大小的棋盤,一開始棋盤上全都是白子。小藍(lán)進(jìn)行了m次操作,每次操作會將棋盤上某個范圍內(nèi)的所有棋子的顏色取反(也就是白色棋子變?yōu)楹谏?,黑色棋子變?yōu)榘咨?。請輸出所有操作做完后棋盤上每個棋子的顏色。
【輸入格式】
????????輸入的第一行包含兩個整數(shù)n,m,用一個空格分隔,表示棋盤大小與操作數(shù)。
????????接下來m行每行包含四個整數(shù) X1,Y1,X2,Y2,相鄰整數(shù)之間使用一個空格分隔,表示將在X1至X2行和Y1至Y2列中的棋子顏色取反。
【輸出格式】
????????輸出n行,每行n個0或1表示該位置棋子的顏色。如果是白色則輸出0,否則輸出1。
【樣例輸入】
3 3
1 1 2 2
2 2 3 3
1 1 3 3
【樣例輸出】
001
010
100
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
public class Main {
private static final StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
public static void main(String[] args) throws IOException {
int n, m;
n = next();
m = next();
int[][] qp = new int[n + 1][n + 1];
for (int i = 1; i <= m; i++) {
int x1, y1, x2, y2;
x1 = next();
y1 = next();
x2 = next();
y2 = next();
for (int j = x1; j <= x2; j++) {
for (int k = y1; k <= y2; k++) {
int v = qp[j][k];
if (v == 0)
qp[j][k] = 1;
else
qp[j][k] = 0;
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
System.out.print(qp[i][j]);
}
System.out.println();
}
}
private static int next() throws IOException {
st.nextToken();
return (int) st.nval;
}
}
?
G、子矩陣
【問題描述】
????????給定一個n ×?m(n行m列)的矩陣。
????????設(shè)一個矩陣的價值為其所有數(shù)中的最大值和最小值的乘積。求給定矩陣的所有大小為a ×?b(a行b)的子矩陣的價值的和。
????????答案可能很大,你只需要輸出答案對998244353 取模后的結(jié)果。
【輸入格式】
????????輸入的第一行包含四個整數(shù)分別表示 n,m,a,b,相鄰整數(shù)之間使用一個空格分隔。
????????接下來n 行每行包含m個整數(shù),相鄰整數(shù)之間使用一個空格分隔,表示矩陣中的每個數(shù)Aij。
【輸出格式】
????????輸出一行包含一個整數(shù)表示答案。
【樣例輸入】
????????2 3 1 2
????????1 2 3
????????4 5 6
【樣例輸出】
? ? ? ? 58
【樣例說明】
????????1×2 + 2×3 + 4×5 + 5×6 = 58。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.math.BigInteger;
public class Main {
private static final StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
public static void main(String[] args) throws IOException {
int m, n, a, b;
m = next();
n = next();
a = next();
b = next();
int[][] nums = new int[m + 1][n + 1];
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
nums[i][j] = next();
}
}
BigInteger count = new BigInteger("0");
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
BigInteger temp = null;
if (i + a - 1 <= m && j + b - 1 <= n) {
temp = new BigInteger("1");
for (int k = i; k <= i + a - 1; k++) {
for (int l = j; l <= j + b - 1; l++) {
temp = temp.multiply(BigInteger.valueOf(nums[k][l]));
}
}
}
if (temp == null)
continue;
count = count.add(temp);
}
}
System.out.println(count.mod(new BigInteger("998244353")));
}
private static int next() throws IOException {
st.nextToken();
return (int) st.nval;
}
}
?
H、公因數(shù)匹配
【問題描述】
????????給定n個正整數(shù)Ai,請找出兩個數(shù) i,j 使得 i < j 且 Ai 和 Aj 存在大于1的公因數(shù)。
????????如果存在多組 i,j,請輸出 i 最小的那組。如果仍然存在多組 i,j, 請輸出最小的所有方案中 j最小的那組。
【輸入格式】
????????輸入的第一行包含一個整數(shù) n。
????????第二行包含n個整數(shù)分別表示A1 A2 ......An,相鄰整數(shù)之間使用一個空格分隔。
【輸出格式】
????????輸出一行包含兩個整數(shù)分別表示題目要求的 i,j,用一個空格分隔。
【樣例輸入】
5
5 3 2 6 9
【樣例輸出】
2 4
【評測用例規(guī)模與約定】
對于40%的評測用例,n≤5000;
對于所有評測用例,1<=n<=10^5,1<=Ai<=10^6;
?
由于Scanner的nextInt()底層用了正則表達(dá)式,會降低輸入效率,這里我用StreamTokenizer
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Comparator;
import java.util.PriorityQueue;
public class Main {
private static final StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
static class MyComparator implements Comparator<Node> {
@Override
public int compare(Node o1, Node o2) {
if (o1.i == o2.i)
return o1.j - o2.j;
return o1.i - o2.i;
}
}
public static void main(String[] args) throws IOException {
int n = next();
int[] nums = new int[n + 1];
for (int i = 1; i <= n; i++) {
nums[i] = next();
}
PriorityQueue<Node> queue = new PriorityQueue<>(new MyComparator());
for (int i = 1; i <= n - 1; i++) {
for (int j = i + 1; j <= n; j++) {
int gcd = getGCD(nums[i], nums[j]);
if (gcd == 1)
continue;
queue.offer(new Node(i, j));
}
}
Node node = queue.poll();
System.out.println(node.i + " " + node.j);
}
private static int getGCD(int m, int n) {
if (n > m) {
m = m ^ n;
n = m ^ n;
m = m ^ n;
}
if (n == 0)
return m;
else
return getGCD(n, m % n);
}
private static int next() throws IOException {
st.nextToken();
return (int) st.nval;
}
}
class Node {
//索引i和j
int i;
int j;
public Node(int i, int j) {
this.i = i;
this.j = j;
}
}
?
?
?
?
?
?
?
?
?
?
?
?
?
到了這里,關(guān)于2023年第十四屆藍(lán)橋杯省賽Java C組題解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!