題意是給乙個給定乙個範圍刷顏色,然後又一範圍刷另一種顏色(可能會覆蓋之前的color),問最後有幾種顏色和分別的面積
肯定立刻會想到二維區間跟新,然而這道題總範圍10000*10000,記憶體超限
所以換一種記錄方式,將每乙個範圍起末座標記錄下來並放到兩個陣列中(橫座標縱座標分開),排序
然後遍歷每乙個範圍,對於這個範圍的起末橫縱座標找到在xy中對應的標號,然後
for(
inty=x1;y
for(int
k=y1;k
etc[y][k]=
a[i].c;
這樣賦值的就只是標號了,有什麼好處呢。。省記憶體啊,例如給乙個範圍的橫座標分別是3,300,若中間沒有其他範圍覆蓋的話,那這個範圍就是用標號1,2替代了
之後把標號遍歷賦值color
for(
inti=0;i
for(intj=0
;j if(
etc[i][j])
color
[etc
[i][j]]+=(
x[i+1]-
x[i])*(
y[j+1]-
y[j]);
**://
// main.cpp
// paint //
// created by mr.xue on 17/7/25. 年
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define ull unsigned __int64
#define ll __int64
//#define ull unsigned long long
//#define ll long long
#define lson l,mid,rt<<1
#define rson mid+
1,r,rt<<1|
1 #define middle (l+r)>>1
#define mod
1000000007
#define esp (
1e-4)
const
intinf=
0x3f3f3f3f;
using
namespace
std;
intcolor[
105],x[
202],y[
202],etc[
202][
202];
struct
node
}a[202];
intbs(
intkey,
intn,
intt)
return-1
; }
intmain()
sort(x
,x+m);
sort(y
,y+m);
cx=1;
cy=1;
for(inti=1
;i for
(inti=0
;i for
(inti=0
;i for(
intj=0;j
if(etc
[i][j])
color
[etc
[i][j]]+=(
x[i+1]-
x[i])*(
y[j+1]-
y[j]); if
(num!=1)
printf
("\n");
printf
("case %d:\n"
,num);
for(inti=1
;i<
102;i++)
} if
(sum==1)
printf
("there is %d color left on the wall.\n"
,sum);
else
printf
("there are %d colors left on the wall.\n"
,sum);
num++; }
return0;
}
MySQL屬於第幾正規化 mysql 之 三大正規化
前言 在使用mysql中對錶的設計,我們需要遵循三大正規化。設計關係型資料庫時,遵從不同的規範和要求,設計出合理的關係型資料庫,這些不同的規範和要求稱為不同的正規化。各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。若要遵循後面的正規化必須遵循之前的正規化。1nf 2nf 3nf 正規化分類 目前關...
hdu 大菲波數
大菲波數 problem description fibonacci數列,定義如下 f 1 f 2 1 f n f n 1 f n 2 n 3。計算第n項fibonacci數值。input 輸入第一行為乙個整數n,接下來n行為整數pi 1 pi 1000 output 輸出為n行,每行為對應的f p...
hdu 勝利大逃亡
problem description ignatius被魔王抓走了,有一天魔王出差去了,這可是ignatius逃亡的好機會.魔王住在乙個城堡裡,城堡是乙個a b c的立方體,可以被表示成a個b c的矩陣,剛開始ignatius被關在 0,0,0 的位置,離開城堡的門在 a 1,b 1,c 1 的位...