HDU 5714 拍照 字首和

2022-03-31 15:08:26 字數 1368 閱讀 6839

小明在旅遊的路上看到了一條美麗的河,河上有許多船隻,有的船隻向左航行,有的船隻向右航行。小明希望拍下這一美麗的風景,並且把盡可能多的船隻都完整地拍到一張**中。

小明位於河的邊上,並且可以在河邊的任意位置進行拍照,照相機的視野恰好為90度角,只能以垂直於河邊的方向進行拍照。河上的船隻全都可看作是平行於河邊的一條線段,跟河邊的距離各不相同,有的正在向左移動,有的正在向右移動,但移動速度恰好都是一樣的。小明可以等待恰當的時間讓盡量多的船隻都走進照相機的視野裡,你不需要考慮船隻之間會互相遮擋視野的情況。

第一行為t,表示輸入資料組數。

下面t組資料,對於每組資料:

第一行是乙個數n(1≤n≤104),表示船隻的數量。

接下來n行,每行四個整數

x,y,z,d(−106≤x對第i組資料,輸出

case #i:

然後輸出一行,僅包含乙個整數,表示最多可以拍到多少完整的船隻。32

1 3 1 1

2 4 1 -1

21 3 1 -1

2 4 1 1

11 4 1 1

case #1:

2case #2:

1case #3:

0分成兩個方向去做,在同乙個方向的船的相對位置會保持不變,那麼我們相當於每條船會給你乙個線段

然後你可以得到線段最大重疊數……

單方向做完了之後,你會發現,只要r>l,r是向左走的船座標,l是向右走的船的座標

那麼肯定在某一時刻,這倆座標是會重疊的,所以只要記錄乙個字首最大值,然後莽一波就好了

#includeusing namespace std;

const int maxn = 1e5+7;

maph;

int l[maxn],r[maxn],x[maxn],y[maxn],z[maxn],d[maxn];

vectorv;

int tot,c[maxn],n;

void init()

void solve(int cas)

sort(v.begin(),v.end());

v.erase(unique(v.begin(),v.end()),v.end());

for(int i=0;i

h[v[i]]=i+1;

for(int i=1;i<=n;i++)

}int max = 0,ans = 0;

for(int i=1;i<=v.size();i++)

printf("case #%d:\n%d\n",cas,ans);

}int main()

2016暑期集訓11C hdu5714 拍照

這道題需要用到 字首和的思想 首先假設船都靜止 由題設可得 y z 到 x z 可以看到船 然後 y z x z 1 這樣在某個位置,也就是一開始的狀態下,可以看到多少條船就 處理出來了 然後左右都線掃求和 左右線掃求到某個位置的最大值 然後再線掃求答案即可 因為相對運動,在某一時刻左右相對的船一定...

N73拍照技巧

n73拍照效果在同類產品中算比較出色,若懂得一些小技巧,效果會更好,1 建議影象質量設為 200萬畫素 這樣能加速存檔速度和手機瀏覽速度。其實,電腦上欣賞,80 100萬畫素。1024 768 pixel 就夠了,且200萬可滿足沖印7寸以及以下的 2 快門鍵按下後,不要鬆手,直到 咔嚓 一聲後,並...

hdu5714 百度之星複賽C

恩。大概就是如果 y z x z 那麼 對於這一艘船來說,在 y z x z 這個區域都可以完整的觀察到它 轉換成 y z 為左端點,x z 為右端點,的n 條線段 把向右走的船看成固定不動的,在這些船右邊,向左走的船在同一時刻最多有多少條 now記錄當前端點處,垂直河岸的線能交叉幾條 向左,向右 ...