3235 战争

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 workint 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
",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          worka,b,c,d);
38     }
39     return 0;
40 }

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注