給定
n 個平面座標系上的矩形,保證矩形不會相交且每個矩形周圍至少乙個單位不會有矩形,求從(0
,0)走到
(x0,
y0) 且不經過矩形內部的點的最短曼哈頓距離。
data constraint n≤
105,x
0>0
首先注意到,除了一種情況以外,其他情況都存在一種最優解不需要往右走,那麼
x 方向的代價是確定的,現在的問題是如何計算
y方向的代價。
考慮掃瞄線。用線段樹維護乙個函式,自變數是
y ,函式值就是從起點走到當前掃瞄線位置的縱座標為y,在
y 方向上的最小代價。
對於乙個矩形的右邊界,(x
,ly)
→(x,
ry),顯然我們需要修改
y 在[l
y,ry
]的函式值。可以二分出乙個位置
w ,滿足[l
y,w]
從ly−
1 走過來優,[w
+1,r
y]從ry+
1 時間複雜度:o(
nlog
n)
#include
#include
#include
#include
#include
using
namespace
std ;
#define n 100000 + 10
#define m 1000000 + 10
const
int minn = -1000001 ;
const
int maxn = 1000001 ;
struct note
} ;struct tree t[30*n] ;
struct line l[n] ;
int n , x0 , y0 ;
int cnt = 1 , root = 1 , ret ;
bool cmp( line a , line b )
int newnode()
void update( int v )
int div( int x )
void modify( int &v , int l , int r , int x , int y , note tag )
update(v) ;
int mid = div( l + r ) ;
if ( y <= mid ) modify( t[v].son[0] , l , mid , x , y , tag ) ;
else
if ( x > mid ) modify( t[v].son[1] , mid + 1 , r , x , y , tag ) ;
else
}void query( int v , int l , int r , int x )
update(v) ;
int mid = div( l + r ) ;
if ( x <= mid ) query( t[v].son[0] , l , mid , x ) ;
else query( t[v].son[1] , mid + 1 , r , x ) ;
}int main()
sort( l + 1 , l + n + 1 , cmp ) ;
modify( root , minn , maxn , 1 , maxn , note( 1 , 0 ) ) ;
modify( root , minn , maxn , minn , 0 , note( -1 , 0 ) ) ;
for (int i = 1 ; i <= n ; i ++ )
modify( root , minn , maxn , l[i].ly , w , note( 1 , cost1 - d ) ) ;
modify( root , minn , maxn , w + 1 , l[i].ry , note( -1 , cost2 + u ) ) ;
}ret = 0 ;
query( 1 , minn , maxn , y0 ) ;
printf( "%d\n" , x0 + ret ) ;
return
0 ;}
以上. 腐女的生日
腐女要過生日了,pty 想給腐女送禮物,但是腐女所在的教室離pty 的教室太遠了,於是pty就拜託會動歸和a星的djy幫忙送禮物。djy在學校建立了乙個平面直角座標系,他站在了 0,0 點,腐女在 x0,y0 點,djy每次只能往上下左右四個方向移動一步,中間有n棟矩形教學樓,每個教學樓給出兩個對角...
老爸的生日
今天是老爸的生日,剛才打了30多分鐘的 以前很多時候是發簡訊的,打 問了他最近的情況,一切都好,好像特別精神,肯定有乙個原因,那就是女兒也考上大學了 談了下我的工作學習問題 最後談了他的工作,他說想要換個工作,那邊的工資高些,我知道那是榆林 陝西的北部 那是個環境比較惡劣的地方,風沙大 以前去過一次...
爸爸的生日
前天是老爸 60歲生日 一直也沒有給爸爸過過生日 決定從今年開始給爸爸過生日 於是昨天就從北京請假趕了回來 還算是比較順利,昨晚 23 20 就回到了家中 爸爸愛喝茶 專門買了一斤龍井 也算是盡盡孝心吧。早晨起來,媽媽就張羅買蛋糕,什麼時候出去吃飯的事情?本來說好中午去飯店給爸爸過生日,但媽媽又給兩...