問題
描述n個不同的顏色的不透明的長方形(1 <= n <= 1000)被放置在一張橫寬為a豎長為b的白紙上。 這些長方形被放置時,保證了它們的邊與白紙的邊緣平行。 所有的長方形都放置在白紙內,所以我們會看到不同形狀的各種顏色。 座標系統的原點(0,0)設在這張白紙的左下角,而座標軸則平行於邊緣。
[編輯]格式
program name: rect1
input format:
(file rect1.in)
按順序輸入放置長方形的方法。第一行輸入的是那個放在底的長方形(即白紙)。
第 1 行: a , b 和 n, 由空格分開 (1 <=a, b<=10,000)
第 2 到n+1行: 為五個整數 llx, lly, urx, ury, color 這是乙個長方形的左下角座標,右上角座標(x+1,y+1)和顏色。
顏色 1和底部白紙的顏色相同。 (1 <= color <= 2500)
output format:
(file rect1.out)
輸出且僅輸出所有能被看到顏色,和該顏色的總面積(可以由若干個不連通的色塊組成),按color增序排列。
[編輯]sample input
20 20 32 2 18 18 2
0 8 19 19 3
8 0 10 19 4
[編輯]sample output
1 912 84
3 187
4 38
分析
這就是那天那到「浮水法」的矩形版。思想一樣,不再多說,有疑問可以參見我部落格上【11月11日的測試】。
但是矩形的思維量就要比線段大的多了。對於矩形來說,兩個矩形的關係很複雜,所以,我們的思想就是讓當前能穿的繼續穿,然後改變矩形的大小,
讓剩下的部分繼續穿透即可。也就是說對於輸入的值,我們要變化。具體的法則自己畫個圖就明白了,**也很好理解。
注意題目要求
反思
好多問題都是由簡到繁,但是,思想是一致的。這就需要我們能夠遷移。能夠加強條件。有思想不等於得分。
code
program liukee;
var s,color,lx,ly,rx,ry:array[0..10000] of longint;
m,n,tot,i,max:longint;
procedure cut(x1,y1,x2,y2,t:longint);
begin
// if t<=tot then
while(t<=tot)and((x2<=lx[t])or(x1>=rx[t])or(y1>=ry[t])or(y2<=ly[t]))do
inc(t);
if t>tot then
begin
inc(s[color[i]],abs((x2-x1)*(y2-y1)));
exit;
end;
if (x1<=lx[t])then begin cut(x1,y1,lx[t],y2,t+1); x1:=lx[t];end;
if (x2>=rx[t])then begin cut(rx[t],y1,x2,y2,t+1); x2:=rx[t];end;
if (y1<=ly[t])then begin cut(x1,y1,x2,ly[t],t+1); y1:=ly[t];end;
if (y2>=ry[t])then begin cut(x1,ry[t],x2,y2,t+1); y2:=ry[t];end;
end;
begin
assign(input,'rect1.in');
assign(output,'rect1.out');
reset(input);
rewrite(output);
readln(rx[1],ry[1],n);//inc(rx[1]);inc(ry[1]);
lx[1]:=0;
ly[1]:=0;
color[1]:=1;
max:=1;
for i:=1 to n do
begin
readln(lx[i+1],ly[i+1],rx[i+1],ry[i+1],color[i+1]);
if max0 then
writeln(i,' ',s[i]);
close(input);
close(output);
end.
3 1 4排程演算法
按照作業 程序達到的先後順序進行服務 對長作業有利,對短作業不利,不會導致飢餓 短作業優先預設是非搶占式的,對短作業有利,對長作業不利 會導致飢餓 搶占式的版本是最短剩餘時間優先演算法 srtn 它具有最短的平均等待時間 既要考慮執行時間,又要考慮等待時間,綜合了前兩個方法的優點,不會導致飢餓 響應...
3 1 4 MySQL基礎 資料的基礎操作
insert語句可以向資料表寫入資料,可以是一條,也可以是多條 insert into 表名 欄位1,欄位2,values 值1,值2,insert into 表名 欄位1,欄位2,values 值1,值2,值1,值2,mysql的insert語句還有一種方言語法 insert into 表名 se...
USACO演算法序列十七 range
題目 http www.nocow.cn index.php translate usaco range 尋找正方形內部所有的正方形塊,包括任意小塊。如果遍歷每個節點,把每個節點當做正方形塊的起始點,然後尋找正方形,會超時的。但是這道題可以通過動態規劃的思想來考慮。map i j 示正方形右下角i,...