1. 程式人生 > 其它 >倍數問題 (倍數-》餘數 // 思路的轉換問題)(藍橋杯)

倍數問題 (倍數-》餘數 // 思路的轉換問題)(藍橋杯)

試題 歷屆真題 三體攻擊【第九屆】【省賽】【A組】
     
資源限制
記憶體限制:256.0MB   C/C++時間限制:1.0s   Java時間限制:3.0s   Python時間限制:5.0s
問題描述
  三體人將對地球發起攻擊。為了抵禦攻擊,地球人派出了 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消耗 < 2000ms   請嚴格按要求輸出,不要畫蛇添足地列印類似:“請您輸入...” 的多餘內容。   注意:   main函式需要返回0;   只使用ANSI C
/ANSI C++ 標準;   不要呼叫依賴於編譯環境或作業系統的特殊函式。   所有依賴的函式必須明確地在原始檔中 #include <xxx>   不能通過工程設定而省略常用標頭檔案。   提交程式時,注意選擇所期望的語言型別和編譯器型別。
View problem

思路:  

1 倍數問題轉化為餘數問題。

2 應為只取3個數,通過這個條件進行優化時間複雜度,只儲存 每一個餘數前3個,

3 要取 3 個數 ,二維列舉 第一個和第二個, 第3個數就直接 利用%為0,把他得出來就行拉。 很妙啊// (每一層是 m的大小(降低時間複雜度))