給你乙個n*n的矩陣,求(x,y)左上角和右下角的值得和。n<1000 有t個(x,y),t<1000;
不可以直接暴力,因為要列舉三個變數,就是n^3,一定會超時,然後就想到二維的字首和,在搞個字尾和。
去乙個點相加就好了,時間o(n^2+n);
const
maxn=1000;
var a,f,f1:array [0..maxn+1,0..maxn+1] of longint;
i,j,n,m,t,x,y:longint;
begin
assign(input,'scout.in'); reset(input);
assign(output,'scout.out'); rewrite(output);
readln(n,m);
for i:=1
to n do
begin
for j:=1
to n do
read(a[i,j]);
readln;
end;
for i:=1
to n do
for j:=1
to n do
f[i,j]:=f[i-1,j]+f[i,j-1]-f[i-1,j-1]+a[i,j];
for i:=n downto1do
for j:=n downto1do
f1[i,j]:=f1[i+1,j]+f1[i,j+1]-f1[i+1,j+1]+a[i,j];
for i:=1
to m do
begin
readln(x,y);
writeln(f[x-1,y-1]+f1[x+1,y+1]);
end;
close(input); close(output);
end.
買裝備(特長生準備)
n個物品,物品有物抗和魔抗還有價值,要求物抗和魔抗都到達規定值,然後價值最小。n 21 物抗 21 魔抗 79 價值 800 二維費用揹包,書上的例題 搜尋,對乙個物品只有選和不選兩種狀態,時間就是o 2 21 var i,j,n,m,x,y,k,min longint a,b,w array 1....
清兵線(準備特長生)
這題我覺得有必要多講講,題目是給了我們三個階段的分數,前四十分還是很好拿的,搜尋加點優化就好了,後面就要用到動態了。因為他說的事向左或向右殺,所以我可以認為他為了更加優化的答案就盡量的不要繞遠路,就是一路向西殺到底,或者殺到一半在回來殺右邊的。很幸運,我水到了60分,哈哈哈。講一下正解吧,首先我們要...
特長生模擬 採藥
題目大意 凡凡要去採藥,他採的藥不僅要求揹包的總空間v能放得下所採的藥,還要求藥草的總質量不能超過凡凡所能承受的範圍m。現在給出n種珍惜的藥材,對於每個藥材凡凡都會精準地目測出其質量a i 體積b i 和價值c i 求凡凡所能採到的藥材的最大價值。注意 每種藥材只有乙個。30 資料,所有藥草質量a ...