1. 程式人生 > >3235 戰爭

3235 戰爭

cst 一行 -1 範圍 -o 然而 row nim 能力

3235 戰爭

時間限制: 2 s 空間限制: 128000 KB 題目等級 : 鉆石 Diamond 題目描述 Description
2050年,人類與外星人之間的戰爭已趨於白熱化。就在這時,人類發明出
一種超級武器,這種武器能夠同時對相鄰的多個目標進行攻擊。凡是防禦力小於或
等於這種武器攻擊力的外星人遭到它的攻擊,就會被消滅。然而,擁有超級武器是
遠遠不夠的,人們還需要一個戰地統計系統時刻反饋外星人部隊的信息。這個艱巨
的任務落在你的身上。請你盡快設計出這樣一套系統。

這套系統需要具備能夠處理如下2類信息的能力:

  1.外星人向[x1,x2]內的每個位置增援一支防禦力為v的部隊。
  2.人類使用超級武器對[x1,x2]內的所有位置進行一次攻擊力為v的打擊。系統需
要返回在這次攻擊中被消滅的外星人個數。

註:防禦力為i的外星人部隊由i個外星人組成,其中第j個外星人的防禦力為j。
輸入描述 Input Description
    第一行讀入n,m。其中n表示有n個位置,m表示有m條信息。
    以下有m行,每行有4個整數k,x1,x2,v用來描述一條信息 。k表示這條信息屬
於第k類。x1,x2,v為相應信息的參數。k=1 or 2。
    註:你可以認為最初的所有位置都沒有外星人存在。
    規模:0<n<=1000;0<x1<=x2<=n;0<v<=1000;0<m<=2000
輸出描述 Output Description
結果輸出。按順序輸出需要返回的信息。
樣例輸入 Sample Input
3 5             
1 1 3 4         
2 1 2 3         
1 1 2 2         
1 2 3 1         
2 2 3 5         
樣例輸出 Sample Output

6

9

數據範圍及提示 Data Size & Hint

詳見試題

 1 #include<cstdio>
 2 int s[1010][1010];
 3 int read()
 4 {
 5     int x = 0, f = 1;char ch = getchar();
6 while (ch<0 || ch>9) {if (ch==-) f=-1; ch=getchar();} 7 while (ch>=0 && ch<=9) {x = x*10+ch-0; ch=getchar();} 8 return x*f; 9 } 10 void work(int k,int x,int y,int v) 11 { 12 int ans = 0; 13 if (k==1) 14 for (int i=x; i<=y; ++i) 15 for (int j=1; j<=v; ++j) 16 s[i][j]++; 17 if (k==2) 18 { 19 for (int i=x; i<=y; ++i) 20 for (int j=1; j<=v; ++j) 21 if (s[i][j]!=0) 22 { 23 ans += s[i][j]; 24 s[i][j] = 0; 25 } 26 printf("%d\n",ans); 27 } 28 return ; 29 } 30 int main() 31 { 32 int n,m,a,b,c,d; 33 n = read(); m = read(); 34 for (int i=1; i<=m; ++i) 35 { 36 a = read();b = read();c = read();d = read(); 37 work(a,b,c,d); 38 } 39 return 0; 40 }

3235 戰爭