社区讨论
萌新20分,大佬帮忙看一哈
P1005[NOIP 2007 提高组] 矩阵取数游戏参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo3f8hcb
- 此快照首次捕获于
- 2023/10/24 05:40 2 年前
- 此快照最后确认于
- 2023/10/24 05:40 2 年前
官方提供的,输入以下:
5 5
0 0 0 0 0
0 0 0 0 1
876 1 566 920 598
259 945 123 659 997
176 478 293 464 278
得到的正确答案为:118214
而我用自己的代码算出来的却是:116126
实在找不出那里错了(先排除用高精)
JAVAimport java.util.Arrays;
import java.util.Scanner;
public class P1005 {
public static int n,m;
public static int[][] arr;
public static boolean[][] f;
//返回列
public static int fun(int i) {
int min = 0;
int l=0,r=m-1;
while (true) {
if (f[i][l]==false && f[i][r]==false) {
break;
}
if (f[i][l]==true) {
l++;
}
if (f[i][r]==true) {
r--;
}
}
return arr[i][l]<arr[i][r]?l:r;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
n = scan.nextInt();
m = scan.nextInt();
long sum = 0;
arr = new int[n][m];
f = new boolean[n][m];
for (int i=0;i<n;i++) {
for (int j=0;j<m;j++) {
arr[i][j] = scan.nextInt();
}
}
for (int j=1;j<=m;j++) { //取的次数
for (int i=0;i<n;i++) { //第i行
int k = fun(i);
f[i][k] = true;
sum += (long)arr[i][k]*(long)((int)Math.pow(2, j));
}
}
System.out.println(sum);
}
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...