JZOJ__Day 8:【普及模拟】马农
生活随笔
收集整理的這篇文章主要介紹了
JZOJ__Day 8:【普及模拟】马农
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
在觀看完戰(zhàn)馬檢閱之后,來自大草原的兩兄弟決心成為超級“馬農(nóng)”,專門飼養(yǎng)戰(zhàn)馬。兄弟兩回到草原,將可以養(yǎng)馬的區(qū)域,分為 N*N 的單位面積的正方形, 并實地進(jìn)行考察,歸納出了每個單位面積可以養(yǎng)馬所獲得的收益。接下來就要開始規(guī)劃他們各自的馬場了。首先,兩人的馬場都必須是矩形區(qū)域。同時,為了方便兩人互相照應(yīng),也為了防止馬匹互相走散,規(guī)定兩個馬場的矩形區(qū)域相鄰,且只有一個交點。最后,互不認(rèn)輸?shù)膬扇讼M麅蓚€馬場的收益相當(dāng),這樣才不會影響他們兄弟的感情。現(xiàn)在,兄弟兩找到你這位設(shè)計師,希望你給他們設(shè)計馬場,問共有多少種設(shè)計方案。輸入
第一行一個整數(shù) N,表示整個草原的大小為 N*N。
接下來 N 行,每行 N 個整數(shù) A(i,j),表示第 i 行第 j 列的單位草地的收成。
(注意:收益可能是負(fù)數(shù),養(yǎng)馬也不是包賺的,馬匹也可能出現(xiàn)生病死亡等意外。)
輸出
輸出符合兩人要求的草原分配方案數(shù)。
樣例輸入
3
1 2 3
4 5 6
7 8 9
樣例輸出
2
【樣例解釋】
數(shù)據(jù)范圍限制
【數(shù)據(jù)范圍】
40%的數(shù)據(jù), N<=10。
100%的數(shù)據(jù), N<=50, -1000< A(i,j)<1000。
程序:
var a,s:array[0..100,0..100] of longint; b:array[-2500000..2500000] of longint; c:array[1..100000] of longint; n,i,j,k,u,x,l:longint; ans:qword;procedure init; beginreadln(n);fillchar(s,sizeof(s),0);for i:=1 to n do for j:=1 to n dobeginread(a[i,j]);s[i,j]:=s[i-1,j]+s[i,j-1]-s[i-1,j-1]+a[i,j];end;ans:=0;fillchar(b,sizeof(b),0); end;procedure work; beginfor i:=1 to n dofor j:=1 to n dobeginl:=0;for k:=1 to i dofor u:=1 to j dobeginx:=s[i,j]-s[i,u-1]-s[k-1,j]+s[k-1,u-1];inc(b[x]);inc(l);c[l]:=x;end;for k:=i+1 to n dofor u:=j+1 to n dobeginx:=s[k,u]-s[k,j]-s[i,u]+s[i,j];inc(ans,b[x]);end;for k:=1 to l do b[c[k]]:=0;l:=0;for k:=1 to i dofor u:=j to n dobeginx:=s[i,u]-s[k-1,u]-s[i,j-1]+s[k-1,j-1];inc(b[x]);inc(l);c[l]:=x;end;for k:=i+1 to n dofor u:=1 to j-1 dobeginx:=s[k,j-1]-s[k,u-1]-s[i,j-1]+s[i,u-1];inc(ans,b[x]);end;for k:=1 to l dob[c[k]]:=0;end; end;beginassign(input,'farmer.in');assign(output,'farmer.out');reset(input);rewrite(output);init;work;writeln(ans);close(input);close(output); end.轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9500084.html
總結(jié)
以上是生活随笔為你收集整理的JZOJ__Day 8:【普及模拟】马农的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JZOJ__Day 7:【普及模拟】ma
- 下一篇: JZOJ__Day 9:【普及模拟】算法