眾所周知,\(\mathrm\)是一名天天\(\mathrm\)的高水平選手。
作為一民長者,為了向大家講述自己\(\mathrm\)的經驗,他決定在乙個禮堂裡為大家舉辦一場演講。
這個禮堂擁有\(n\times m\)個位子,排成\(n\)行\(m\)列。每個位子都有一盞燈,一開始有的燈是亮的,有的燈是滅的。這個禮堂十分詭異,人們操作一次只能使某一行或某一列(某一行或某一列由操作者你自己來決定)的燈的明暗狀態全都發生轉變(顯然,我們不一定可以把所有的燈都點亮)。
來聽演講的人只會坐在燈已經被點亮的位置, 所以可以聽演講的位置只會是乙個只由燈是亮的的位子所組成的矩形(不然坐太亂,\(\mathrm\)會不高興的) 。
\(\mathrm\)知道會有很多人來聽演講, 所以他希望找到乙個經過若干操
作後的面積最大的只由燈是亮的的位子所組成的矩形。 這個任務當然由想\(\mathrm\)的你來完成啦!
第一行兩個正整數表示\(n,m\)。
接下來有\(n\)行,每行有\(m\)個字元(『#』表示這個燈初始狀態是亮的,『.』表示這個燈初始狀態是暗的)。
一行乙個整數表示你找到的矩形的面積。
對於\(5\%\)的資料:\(n=2,m=2\)
對於\(15\%\)的資料:\(n\times m\le 8\)
對於\(30\%\)的資料:\(n,m\le 10\)
對於\(60\%\)的資料:\(n\le 1\le 10^2\)
對於\(80\%\)的資料:\(n\le 4\times 10^2\)
對於\(100\%\)的資料:\(n\le 2\times 10^3\)
輸入檔案比較大, 請使用比較快速的讀入方法。
這一題寫起來不是很困難。
這一題確實不算難
主要就是「手玩手玩,再手玩」
如果我們的某乙個矩形是答案矩形,那麼它一定會滿足什麼呢?
假設現在我們已經做完了行操作得到了中間狀態,那麼中間狀態如何指經過列操作得到答案矩形呢?
我們再****如何只通過列操作得到中間狀態呢?
手玩以後,我們發現,如果乙個原始的01矩陣相鄰行異或之後,每一行連續的0,1即是合法的選取
這裡就轉換成了乙個取矩形的問題,可以使用單調棧進行優化
code:
#include #include using namespace std;
const int n=2010;
bitset a[n],d[n];
int max(int x,int y)
int n,m,ans;char c;
int f[n][n],l[n],r[n],s[n],tot;
int main()
}for(int i=2;i<=n;i++)
a[i]=d[i]^d[i-1];
for(int i=1;i<=n;i++)
}for(int i=1;i<=m;i++)
tot=0;
for(int j=n;j>1;j--)
for(int j=2;j<=n;j++)
ans=max(ans,f[j][i]*(r[j]+l[j]));
}printf("%d\n",ans);
return 0;
}
2018.8.16 安徽師大附中 你賽day9 T2 富 解題報告
出於某些原因,苟先生在追殺富先生。富先生所在的地方是乙個 n times m 的網格,苟先生排出了他的狼狗大軍,共有 k 條狗,第 i 條狗所在的位置為 x i,y i 每條狗每個時刻都可以向 8 個方向前進一步。如果乙個格仔最快的一條狗需要 t 時刻才能到,那麼這個格仔就是 t 危險的,現在給你 ...
安徽師大附中 你賽day7 T2 乘積 解題報告
mathrm 最近在潛心研究數學,他發現了一類很有趣的數字,叫做無平方因子數。也就是這一類數字不能夠被任意乙個質數的平方整除,比如 6 7 10 都是無平方因子數,而 12 則不是。所以 mathrm 在思考乙個問題 選擇不超過 k 個 n 以內的正整數乘起來,使得乘積是乙個無平方因子數,有多少種取...
安徽師大附中 你賽day4T1 金字塔 解題報告
zdrcl 帶著妹子們來到了胡夫金字塔周邊旅遊,發現這裡正在進行乙個有關金字塔的遊戲 遊戲規則如下 1 這裡的金字塔是乙個 n 階的二維金字塔。2 把金字塔的每一層從上往下從 1 到 n 順次標號,對於第 i 層,有 2 i 1 個格仔,且第 i 層的格仔比第 i 1 層少的兩個格仔恰好是第 i 1...