日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【09年特长生第四题】开发区规划

發布時間:2024/3/12 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【09年特长生第四题】开发区规划 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發區規劃開發區規劃


題目

小王是D市主管經濟的副市長,由于經濟發展的需要,要在D市組建一個高新技術開發區,經過研究,規劃局在D市的東部劃出了一塊土地作為開發區選址。這塊土地是一塊矩形平原,小王準備在上面修建一些建筑。為了規劃方便,他將矩形劃分成NM格。棘手的是,這塊土地有些歷史文化遺址散布在某些格子內,這些歷史文化遺址是萬萬不能拆除的,否則將激起民憤,小王深知這一點,因此,他的新建筑在選址時要避開這些格子。
  假設新的建筑物有P種規格,每種建筑物都是正方形的,占地為TiTi格 (1<=i<=P)。小王想知道對于每種規格的建筑,有多少種不同的合適選址方案(一種合適的選址方案指的是在該建筑所占的正方形區域內不存在有歷史文化遺址的格子)。現在請你來當小王的秘書 幫他完成這個光榮而艱巨的任務。


輸入

從文件d.ind.ind.in讀入數據,輸入文件第一行包含三個數,分別代表N,M,PN,M,PN,M,P (1<=N,M<=2000,1<=P<=1000)(1<=N,M<=2000,1<=P<=1000)(1<=N,M<=2000,1<=P<=1000) 隨后的nnn行,每行有mmm000111111表示該格為空地,000表示該格有歷史文化遺址)。接下來的PPP行每行有一個整數TiTiTi

輸出

結果輸出到文件d.outd.outd.out中,共有PPP行,每行一個整數,第iii行的數代表邊長為TiTiTi的建筑物選址方案數。


輸入樣例

4 4 2 1011 1111 1110 1110 2 3

輸出樣例

5 1

解題思路

這題我們可以根據樣例來處理
例如:
可以根據其中每個數字代表以該格為右下角,最多可以達成邊長為多少的正方形
然后統計,每種邊長都可以由比它大的邊長的格子達成

1011 1112 1220 1230

程序如下

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm>using namespace std;int n, m, p, k, Max;int a[10001][1001], f[10001][1001], t[10001], b[10001][1001];char x[10001];int main() {scanf("%d%d%d", &n, &m, &p);for(int i = 1; i <= n; ++i){scanf("%s",&x);for(int j = 1; j <= m; ++j)a[i][j] = x[j - 1] - '0';for(int j = 1; j <= m; ++j)if(a[i][j] != 0) f[i][j] = f[i][j - 1] + 1;//統計正方形數量}for(int j = 1; j <= m; ++j)for(int i = 1; i <= n; ++i)if(a[i][j] != 0) b[i][j] = b[i - 1][j] + 1;-for(int i = 1; i <= n; ++i)for(int j = 1; j <= m; ++j)if(a[i][j] != 0){a[i][j] = min(min(a[i - 1][j - 1] + 1, f[i][j]), b[i][j]);//求最優解t[a[i][j]]++;}Max = max(n , m);for(int i = Max - 1; i >= 1; --i)t[i] += t[i + 1];for(int i = 1; i <= p; ++i){scanf("%d", &k);printf("%d\n",t[k]);}return 0; }

總結

以上是生活随笔為你收集整理的【09年特长生第四题】开发区规划的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。