小明在旅遊的路上看到了一條美麗的河,河上有許多船隻,有的船隻向左航行,有的船隻向右航行。小明希望拍下這一美麗的風景,並且把盡可能多的船隻都完整地拍到一張**中。
小明位於河的邊上,並且可以在河邊的任意位置進行拍照,照相機的視野恰好為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記錄當前端點處,垂直河岸的線能交叉幾條 向左,向右 ...