題目內容
對題目的含義理解錯誤
看代碼~~我以為是統計一下多少人在那天,覺得這個pageNum沒大用,結果是我錯了……
下為代碼:
import java
.util
.Scanner
;public class Main {public static void main(String
[] args
) {Scanner scanner
= new Scanner(System
.in
);int studentNum
= scanner
.nextInt();int pageNum
= scanner
.nextInt();int dayNum
= scanner
.nextInt();int[] dayArray
= new int[dayNum
];for (int i
= 0; i
< studentNum
; i
++) {for (int j
= 0; j
< pageNum
; j
++) {int temp
= scanner
.nextInt();dayArray
[temp
-1]++;}}StringBuilder result
= new StringBuilder();for (int i
= 0; i
< dayNum
-1; i
++) {result
.append(dayArray
[i
]).append(" ");}result
.append(dayArray
[dayNum
-1]);System
.out
.println(result
);scanner
.close();}
}
測試:
顯然,結果是不對的……
更正后的自測
結尾一個數不對,查看代碼,發現bug:
第一次提交——TLE警告
代碼是這樣的:
import java
.util
.Scanner
;public class Main {public static void main(String
[] args
) {Scanner scanner
= new Scanner(System
.in
);int studentNum
= scanner
.nextInt();int pageNum
= scanner
.nextInt();int dayNum
= scanner
.nextInt();int[][] dayArray
= new int[dayNum
][pageNum
];for (int i
= 0; i
< studentNum
; i
++) {for (int j
= 0; j
< pageNum
; j
++) {int temp
= scanner
.nextInt();dayArray
[temp
-1][j
]++;}}StringBuilder result
= new StringBuilder();for (int i
= 0; i
< dayNum
-1; i
++) {int count
= 0;for (int j
= 0; j
< pageNum
; j
++) {if (dayArray
[i
][j
] != 0) {count
++;}}result
.append(count
).append(" ");}int count
= 0;for (int j
= 0; j
< pageNum
; j
++) {if (dayArray
[dayNum
-1][j
] != 0) {count
++;}}result
.append(count
);System
.out
.println(result
);scanner
.close();}
}
第二次提交——TLE×3暴擊
本蒟蒻沒想到,boolean比int還慢,醉了:
import java
.util
.Scanner
;public class Main {public static void main(String
[] args
) {Scanner scanner
= new Scanner(System
.in
);int studentNum
= scanner
.nextInt();int pageNum
= scanner
.nextInt();int dayNum
= scanner
.nextInt();boolean[][] dayArray
= new boolean[dayNum
][pageNum
];for (int i
= 0; i
< studentNum
; i
++) {for (int j
= 0; j
< pageNum
; j
++) {int temp
= scanner
.nextInt();dayArray
[temp
-1][j
]=true;}}StringBuilder result
= new StringBuilder();for (int i
= 0; i
< dayNum
-1; i
++) {int count
= 0;for (int j
= 0; j
< pageNum
; j
++) {if (dayArray
[i
][j
]) {count
++;}}result
.append(count
).append(" ");}int count
= 0;for (int j
= 0; j
< pageNum
; j
++) {if (dayArray
[dayNum
-1][j
]) {count
++;}}result
.append(count
);System
.out
.println(result
);scanner
.close();}
}
第三次提交——RE,寧真狼
這次直接byte,我們既然不想優化算法,那就優化數據類型吧,哈哈:
import java
.util
.Scanner
;public class Main {public static void main(String
[] args
) {Scanner scanner
= new Scanner(System
.in
);byte studentNum
= scanner
.nextByte();byte pageNum
= scanner
.nextByte();byte dayNum
= scanner
.nextByte();byte[][] dayArray
= new byte[dayNum
][pageNum
];for (int i
= 0; i
< studentNum
; i
++) {for (int j
= 0; j
< pageNum
; j
++) {int temp
= scanner
.nextInt();dayArray
[temp
-1][j
]++;}}StringBuilder result
= new StringBuilder();for (int i
= 0; i
< dayNum
-1; i
++) {byte count
= 0;for (int j
= 0; j
< pageNum
; j
++) {if (dayArray
[i
][j
] != 0) {count
++;}}result
.append(count
).append(" ");}byte count
= 0;for (int j
= 0; j
< pageNum
; j
++) {if (dayArray
[dayNum
-1][j
] != 0) {count
++;}}result
.append(count
);System
.out
.println(result
);scanner
.close();}
}
盲測是超byte范圍了,可我真的忘了byte的大小誒,測一下~~
自檢:
復習一下,byte在-128~127,寧真行……
第四次提交——AC之道,在于Short
附上AC代碼
import java
.util
.Scanner
;public class Main {public static void main(String
[] args
) {Scanner scanner
= new Scanner(System
.in
);short studentNum
= scanner
.nextShort();short pageNum
= scanner
.nextShort();short dayNum
= scanner
.nextShort();short[][] dayArray
= new short[dayNum
][pageNum
];for (int i
= 0; i
< studentNum
; i
++) {for (int j
= 0; j
< pageNum
; j
++) {int temp
= scanner
.nextInt();dayArray
[temp
-1][j
]++;}}StringBuilder result
= new StringBuilder();for (int i
= 0; i
< dayNum
-1; i
++) {short count
= 0;for (int j
= 0; j
< pageNum
; j
++) {if (dayArray
[i
][j
] != 0) {count
++;}}result
.append(count
).append(" ");}short count
= 0;for (int j
= 0; j
< pageNum
; j
++) {if (dayArray
[dayNum
-1][j
] != 0) {count
++;}}result
.append(count
);System
.out
.println(result
);scanner
.close();}
}
總結
以上是生活随笔為你收集整理的被卡性能的时候要care数据类型(洛谷P5594TLE+RE的经历,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。