侦察兵

来源:互联网 发布:三国志9优化 编辑:程序博客网 时间:2024/04/30 17:33

【问题描述】

    mxy 沉迷于一个辣鸡游戏不可自拔。

    游戏地图是一个 n*n 的矩形,在每个单位格子上有一个数字,代表当前位置的生命体

个数,作为一个侦察兵,mxy 的任务是计算出她所在位置的左上角和右下角的总人数(不

包括她所在的行列)。

    注意作为一个侦察兵,mxy 是不包括在地图上的生命体个数中的。

【输入】

    第一行 2 个整数 n t。(1n10001t1000

    接下来 n 行,每行 n 个整数表示每个单位格子上的生命体个数a。(1a100

    再下来 t 行,每行两个整数 xiyi,表示不同时刻mxy 在地图上的位置。

【输出】

   T 行,每行一个整数,表示当前时刻 mxy所在位置的左上角和右下角的总人数。

【输入输出样例】

scout.in

4 1

0 1 2 0

3 2 0 0

1 2 3 2

0 0 0 10

3 3

scout.out

16


满分程序:

var
n,t,i,j,x,y:longint;
a:array[0..1001,0..1001]of longint;
begin
    readln(n,t);
    for i:=1 to n do
    for j:=1 to n do
    begin
        read(a[i,j]);
        a[i,j]:=a[i,j]+a[i-1,j]+a[i,j-1]-a[i-1,j-1];
    end;
    for i:=1 to t do
    begin
        readln(x,y);
        writeln(a[x-1,y-1]+a[n,n]-a[x,n]-a[n,y]+a[x,y]);
    end;
end.


另一种80分程序:

var
n,t,i,j,x,y:longint;
tj:int64;
a:array[0..1000,0..1000]of int64;
procedure js;
var
i:longint;
begin
    for i:=1 to x-1 do
    for j:=1 to y-1 do
    tj:=tj+a[i,j];
    for i:=x+1 to n do
    for j:=y+1 to n do
    tj:=tj+a[i,j];
end;
begin
    fillchar(a,sizeof(a),0);
    readln(n,t);
    for i:=1 to n do
    begin
        for j:=1 to n do
        read(a[i,j]);
        readln;
    end;
    for i:=1 to t do
    begin
        readln(x,y);
        tj:=0;
        js;
        writeln(tj);
    end;
end.


原创粉丝点击