wzz的視察
檔名: inspect 時限:1s 記憶體:256mb
decription
wzz擁有乙個王國。他的王國是長方形的,跨越了n個維度區和m個經度區,且在每個經度區和緯度區的交界處有一座城市(即wzz的王國一共有n * m座城市)。
某一天早上,wzz從他的一萬平方公尺的大床上起來,他決定去視察一下他的王國,去檢視一下他的全民刷題計畫的實施情況。
訊息一出,全王國各城市的市長們都嚇到了,因為有一些市長偷懶還沒有宣布wzz的全民刷題計畫,所以全體市長集體開了個會,討論要怎樣才能讓wzz不發現他們的不作為。他們知道wzz有個壞習慣,他只會視察乙個正方形區域的城市,而他們也知道視察了越多的城市,wzz就會越開心。但一旦wzz發現他視察的城市他的政策沒有貫徹下去,他就會非常憤怒,然後把這些市長發配去養豬。
市長們現在想找出來乙個最大正方形,使得在這個正方形內的所有城市都已經貫徹了wzz的全民刷題計畫。
input
輸入的第一行為兩個整數n,m,表示wzz王國橫跨的緯度區數量和經度區數量。
接下來n行,每行有m個整數,每個整數只可能為0或者1,0表示這個城市沒有貫徹wzz的全名刷題計畫,1表示已經貫徹。
output
輸出乙個數字k,為最大的正方形的邊長。
sample input
3 30 1 1
1 1 1
1 1 1
sample output
hint
對於 30%的資料,1<=n,m<=30。
對於 100%的資料,1<=n,m<=2000
我以為可以利用矩陣字首和來算出最大的正方形
但我想的是乙個點乙個點的暴力,在暴力列舉一條邊多長-。-、當時就爆時間了-。- n^3啊啊啊啊!
然而我忘了直接乙個ha:表示現在最大的正方形邊長,從ha開始列舉如果ha滿足ha+1,不滿足ha-1啊!n^2+n......
然而事實證明讀入優化真的很重要.....
#includeusing namespace std;
int n,m,f[2005][2005], dp[2005][2005], ans = 0;
inline int read()
int main()
int ha = 0;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
}cout << ha;
return 0;
}
一道關於訊號的題
用fork建立兩個子程序,呼叫signal 讓父程序接收鍵盤上的中斷訊號 control c 捕捉到訊號後父程序用kill 向子程序傳送自定義訊號,子程序捕捉到訊號後分別輸出如下資訊後終止 child process 1 is killed by parent child process 2 is ...
關於C 的一道題
閱讀下面程式,然後請寫出輸出結果 cpp view plaincopy include using namespace std int main void 輸出結果如下圖 分析 為什麼會這樣的結果呢?首先我們先分析一下程式,首先我們先看看第一組a和b,那麼a和b是什麼呢?根據我們所學,我們知道a和b...
一道關於排序的演算法題
題目 給定乙個無序陣列a,一直這個陣列a中的任意乙個元素所在的位置離其最終排序後的位置相差的距離不會超過k。即排序前a i 在位置i,那麼在排序後該元素的位置會在 i k,i k 這個範圍內。現在要求給出乙個演算法使得演算法盡量高校。解析 這裡就不多說了,直接給自己的解法吧。利用乙個大小為k 1的最...