2018蓝桥杯省赛---java---A---7(三体攻击)
生活随笔
收集整理的這篇文章主要介紹了
2018蓝桥杯省赛---java---A---7(三体攻击)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
題目:三體人將對地球發起攻擊。為了抵御攻擊,地球人派出了 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 lanqiao;import java.util.*; public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);int A,B,C,m,n=0;A=in.nextInt(); //i層B=in.nextInt(); //j行C=in.nextInt(); //k列m=in.nextInt(); //攻擊次數int a[][][]=new int[A][B][C]; //生命值int b[][]=new int[m][7];//存儲A,B,C的范圍for(int i=0;i<A;i++)for(int j=0;j<B;j++)for(int k=0;k<C;k++) {a[i][j][k]=in.nextInt();}for(int i=0;i<m;i++)for(int j=0;j<7;j++) {b[i][j]=in.nextInt();}for(int i=0;i<m;i++) //循環每一輪數for(int x=b[i][0]-1;x<=b[i][1]-1;x++)for(int y=b[i][2]-1;y<=b[i][3]-1;y++)for(int z=b[i][4]-1;z<=b[i][5]-1;z++) {a[x][y][z]-=b[i][6];if(a[x][y][z]<0) { //判斷該戰艦的防御是否已經小于0System.out.println(i+1);return;}}}}總結
以上是生活随笔為你收集整理的2018蓝桥杯省赛---java---A---7(三体攻击)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 家用电脑用什么配置好?
- 下一篇: 2018蓝桥杯省赛---java---A