2016暑期集訓11C hdu5714 拍照

2021-07-16 22:53:43 字數 1781 閱讀 3254

這道題需要用到

字首和的思想

首先假設船都靜止

由題設可得 y-z 到 x+z 可以看到船

然後(y-z)++ (x+z+1)–

這樣在某個位置,也就是一開始的狀態下,可以看到多少條船就

處理出來了

然後左右都線掃求和

左右線掃求到某個位置的最大值

然後再線掃求答案即可

因為相對運動,在某一時刻左右相對的船一定會相遇

問題 c: 拍照

時間限制: 1 sec 記憶體限制: 128 mb

提交: 54 解決: 35

[提交][狀態][討論版]

題目描述

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

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

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

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

第一行是乙個數n,表示船隻的數量。

接下來n行,每行四個整數 x,y,z,d,表示船隻的左端點位置、右端點位置、距離河邊的距離,以及航行的方向。d為-1表示向左航行,1表示向右航行。

輸出 對第i組資料,輸出

case #i:

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

樣例輸入

3 2

1 3 1 1

2 4 1 -1

2 1 3 1 -1

2 4 1 1

1 1 4 1 1

樣例輸出

case #1:

2 case #2:

1 case #3:

0 提示

1<=n<=10000 -10^6<=x

#include

#include

#include

#include

using

namespace

std;

int t,n;

int le[2000005],ri[2000005],suml[2000005];

int sumr[2000005],rmax[2000005],lmax[2000005];

int main()

int cnt=0,ans=0;

int ll=1000000000,rr=0;

scanf("%d",&n);

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

else

}}

suml[ll-1]=0;

sumr[rr+1]=0;

for (int i=ll;i<=rr;i++)

lmax[ll]=suml[ll];

rmax[rr]=sumr[rr];

for (int i=ll;i<=rr;i++)

for (int i=ll;i<=rr;i++)

if (lmax[i]+rmax[i]>ans) ans=lmax[i]+rmax[i];

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

}return

0;}

2016暑期集訓集中貼

暑假期間網上練習的題解將在此部落格公布,具體內容見後文。以下是暑期集訓各隊員題量統計 包括賽後補的題 2016暑期集訓acboard 截至07 23 總題量557 5101010 1163 隊員名稱 cf 1 cf 2 cf 3 cf 4 cf 5 模擬訓練1 模擬訓練2 模擬訓練3 模擬訓練4 模...

ACM暑期集訓5

今天主要學習力圖論基礎和最短路徑 1.圖論基礎 1 鄰接矩陣存圖 w i j 表示以ij為頂點的邊的權值 const int n 105,inf 9999999 int dis n w n n vis n n,m 鄰接矩陣存圖 for int i 1 i n i for int i 0 i2 鄰接表...

2016暑期集訓 搜尋 簡單BFS

雖然,雖然,這道題很簡單。但是我一直覺得我自己關於搜尋可以算是一點都不會的,所以寫得時候也是有點沒底,可是,出乎意料的是我 寫完測了一下樣例是對的,交了之後發現過了,還是很開心的!看題,想題,敲 交題,ac!對,就是沒有debug這一步,這種一順溜,不用debug就過題的感覺真爽。第一次從搜尋的題目...