蓝桥杯三体攻击
題目描述
標題:三體攻擊
【題目描述】
三體人將對地球發起攻擊。為了抵御攻擊,地球人派出了 A?×?B?×?C 艘戰艦,在太空中排成一個 A 層 B 行 C 列的立方體。其中,第 i 層第 j 行第 k 列的戰艦(記為戰艦 (i,?j,?k))的生命值為 d(i,?j,?k)。
三體人將會對地球發起 m 輪“立方體攻擊”,每次攻擊會對一個小立方體中的所有戰艦都造成相同的傷害。具體地,第 t 輪攻擊用 7 個參數 lat,?rat,?lbt,?rbt,?lct,?rct,?ht 描述;
所有滿足 i?∈?[lat,?rat],j?∈?[lbt,?rbt],k?∈?[lct,?rct] 的戰艦 (i,?j,?k) 會受到 ht 的傷害。如果一個戰艦累計受到的總傷害超過其防御力,那么這個戰艦會爆炸。
地球指揮官希望你能告訴他,第一艘爆炸的戰艦是在哪一輪攻擊后爆炸的。
【輸入格式】
從標準輸入讀入數據。
第一行包括 4 個正整數 A,?B,?C,?m;
第二行包含 A?×?B?×?C 個整數,其中第 ((i???1)×B?+?(j???1))?×?C?+?(k???1)+1 個數為 d(i,?j,?k);
第 3 到第 m?+?2 行中,第 (t???2) 行包含 7 個正整數 lat,?rat,?lbt,?rbt,?lct,?rct,?ht。
【輸出格式】
輸出到標準輸出。
輸出第一個爆炸的戰艦是在哪一輪攻擊后爆炸的。保證一定存在這樣的戰艦。
【樣例輸入】
2 2 2 3
1 1 1 1 1 1 1 1
1 2 1 2 1 1 1
1 1 1 2 1 2 1
1 1 1 1 1 1 2
【樣例輸出】
2
【樣例解釋】
在第 2 輪攻擊后,戰艦 (1,1,1) 總共受到了 2 點傷害,超出其防御力導致爆炸。
【數據約定】
對于 10% 的數據,B?=?C?=?1;
對于 20% 的數據,C?=?1;
對于 40% 的數據,A?×?B?×?C,?m?≤?10,?000;
對于 70% 的數據,A,?B,?C?≤?200;
對于所有數據,A?×?B?×?C?≤?10^6,?m?≤?10^6,?0?≤?d(i,?j,?k),?ht?≤?10^9。
資源約定:
峰值內存消耗(含虛擬機) < 256M
CPU消耗 < 3000ms
請嚴格按要求輸出,不要畫蛇添足地打印類似:“請您輸入…” 的多余內容。
所有代碼放在同一個源文件中,調試通過后,拷貝提交該源碼。
不要使用package語句。不要使用jdk1.7及以上版本的特性。
主類的名字必須是:Main,否則按無效代碼處理。
java代碼
暴力解
import java.util.Scanner;public class Main {static int[][][] data;static int A, B, C, m;static Scanner sc;public static void main(String[] args) {sc = new Scanner(System.in);A = sc.nextInt();B = sc.nextInt();C = sc.nextInt();m = sc.nextInt();data = new int[A + 1][B + 1][C + 1];for (int i = 1; i < data.length; i++) {for (int j = 1; j < data[i].length; j++) {for (int k = 1; k < data[i][j].length; k++) {data[i][j][k] = sc.nextInt();}}}for (int i = 0; i < m; i++) {if (solve()) {System.out.println(i + 1);return;}}sc.close();}private static boolean solve() {int la = sc.nextInt();int ra = sc.nextInt();int lb = sc.nextInt();int rb = sc.nextInt();int lc = sc.nextInt();int rc = sc.nextInt();int ht = sc.nextInt();for (int i = la; i <= ra; i++) {for (int j = lb; j <= rb; j++) {for (int k = lc; k <= rc; k++) {data[i][j][k] -= ht;if (data[i][j][k] < 0) {return true;}}}}return false;} }總結
- 上一篇: 大我6岁的女友回复我的雷人短信
- 下一篇: Python认证-权限