é”Œē›®ēš„é›£åŗ¦é”č‰²ä½æē”Ø Luogu äøŠēš„åˆ†ē“šļ¼Œē”±ē°”å–®åˆ°å›°é›£åˆ†åˆ„ē‚ŗ šŸ”“šŸŸ šŸŸ”šŸŸ¢šŸ”µšŸŸ£āš«ć€‚

šŸ”— ABC457G Catch All Apples

Problem Statement

é”Œē›®ē°”čæ°

꜉ NN é”†č˜‹ęžœęœƒåœØęŒ‡å®šę™‚é–“å‡ŗē¾åœØę•øē·šäøŠēš„ęŒ‡å®šä½ē½®ć€‚
ęÆå€‹äŗŗäø€é–‹å§‹åÆä»„åœØä»»ę„ä½ē½®ļ¼Œä¹‹å¾ŒęÆå–®ä½ę™‚é–“ęœ€å¤šē§»å‹• 11ļ¼Œč‹„ęŸäŗŗčƒ½åœØč˜‹ęžœå‡ŗē¾ēš„ę™‚é–“ä½ę–¼č©²ä½ē½®ļ¼Œå°±åÆä»„ęŽ„ä½é‚£é”†č˜‹ęžœć€‚

č«‹ę±‚å‡ŗęœ€å°‘éœ€č¦å¤šå°‘äŗŗļ¼Œę‰čƒ½ęŠŠę‰€ęœ‰č˜‹ęžœéƒ½ęŽ„ä½ć€‚

Constraints

ē“„ęŸę¢ä»¶

  • 1≤N≤3Ɨ1051 \le N \le 3 \times 10^5
  • 0≤Ti,Xi≤3Ɨ1050 \le T_i, X_i \le 3 \times 10^5
  • ꉀ꜉ (Ti,Xi)(T_i, X_i) å…©å…©äøåŒ
  • č¼øå…„ēš†ē‚ŗę•“ę•ø

ę€č·Æļ¼šåŗ§ęØ™č½‰ę› + Dilworth å®šē†

ęŠŠåÆé”ę€§ę¢ä»¶åÆ«ęˆäøē­‰å¼

č€ƒę…®å…©é”†č˜‹ęžœļ¼Œå‡čØ­å‰č€…ēš„ę™‚é–“å’Œä½ē½®ē‚ŗ (Ti,Xi)(T_i, X_i)ļ¼Œå¾Œč€…ē‚ŗ (Tj,Xj)(T_j, X_j) äø” Ti≤TjT_i \le T_jć€‚åŒäø€å€‹ę©Ÿå™Øäŗŗčƒ½äøčƒ½å…ˆęŽ„ä½å‰č€…å†ęŽ„å¾Œč€…ļ¼Ÿ

ę©Ÿå™Øäŗŗé€Ÿåŗ¦äøŠé™ē‚ŗ 11ļ¼Œę‰€ä»„å”Æäø€ēš„č¦ę±‚ę˜Æļ¼šå…©č€…ēš„ę™‚é–“å·®č¶³ä»„č¦†č“‹ä½ē½®å·®ļ¼Œä¹Ÿå°±ę˜Æ ∣Xjāˆ’Xiāˆ£ā‰¤Tjāˆ’Ti|X_j - X_i| \le T_j - T_i怂

å±•é–‹ēµ•å°å€¼å¾—åˆ°å…©ę¢äøē­‰å¼ļ¼š

{Xjāˆ’Xi≤Tjāˆ’TiXiāˆ’Xj≤Tjāˆ’Ti\begin{cases} X_j - X_i \le T_j - T_i \\[4pt] X_i - X_j \le T_j - T_i \end{cases}

ę•“ē†å¾Œåˆ†åˆ„å¾—åˆ°ļ¼š

Ti+Xi≤Tj+Xj,Tiāˆ’Xi≤Tjāˆ’XjT_i + X_i \le T_j + X_j,\quad T_i - X_i \le T_j - X_j

å…©č€…åæ…é ˆåŒę™‚ęˆē«‹ć€‚ä¹Ÿå°±ę˜ÆčŖŖļ¼Œå®šē¾©å…©å€‹č½‰ę›å€¼ u=T+Xu = T + X 和 v=Tāˆ’Xv = T - Xļ¼Œå‰‡åÆęŽ„ēŗŒēš„å……č¦ę¢ä»¶å°±ę˜Æ ui≤uju_i \le u_j äø” vi≤vjv_i \le v_j怂

å¾žęœ€å°‘äŗŗę•øåˆ°ęœ€å¤§åéˆ

ęÆé”†č˜‹ęžœå°ę‡‰åˆ° uu-vv å¹³é¢äøŠēš„äø€å€‹é»žć€‚č‹„ ii čƒ½ęŽ„ēŗŒåˆ° jjļ¼Œč”Øē¤ŗå®ƒå€‘åÆē”±åŒäø€å€‹ę©Ÿå™Øäŗŗč™•ē†ć€‚å› ę­¤ļ¼Œäø€ę¢åˆę³•ēš„å—ē†åŗåˆ—å°ę‡‰åˆ°å¹³é¢äøŠå…©åŗ§ęØ™éƒ½äøäø‹é™ēš„äø€ę¢é»žåˆ—ļ¼ˆéˆļ¼‰ć€‚

é”Œē›®å•ęœ€å°‘éœ€č¦å¹¾ę¢äøäø‹é™éˆę‰čƒ½č¦†č“‹ę‰€ęœ‰é»žā€”ā€”é€™ę­£ę˜Æååŗé›†ēš„ęœ€å°‘éˆč¦†č“‹å•é”Œć€‚

做過 P1020 [NOIP 1999 ęé«˜ē»„] åÆ¼å¼¹ę‹¦ęˆŖ ēš„č®€č€…åÆčƒ½å°é€™å€‹č½‰ę›äøé™Œē”Ÿļ¼šę ¹ę“š Dilworth å®šē†ļ¼šåœØęœ‰é™ååŗé›†äø­ļ¼Œęœ€å°‘éˆč¦†č“‹ę•øē­‰ę–¼ęœ€å¤§åéˆēš„å¤§å°ć€‚

é€™č£”ēš„åéˆę˜Æäø€ēµ„å…©å…©äøåÆęŽ„ēŗŒēš„č˜‹ęžœā€”ā€”ä»»å–å…©é”†ļ¼Œéƒ½ē„”ę³•ęŽ’é€²åŒäø€å€‹ę©Ÿå™Øäŗŗēš„å—ē†é †åŗäø­ć€‚ę›å„č©±čŖŖļ¼Œå°åéˆäø­ēš„ä»»ę„å…©é»ž i,ji, jļ¼Œäøčƒ½åŒę™‚ę»æč¶³ ui≤uju_i \le u_j äø” vi≤vjv_i \le v_jļ¼ˆå¦å‰‡å®ƒå€‘å°±ę˜ÆåÆęŽ„ēŗŒēš„ļ¼‰ć€‚

åˆ»ē•«åéˆļ¼šv ēš„åš“ę ¼äø‹é™å­åŗåˆ—

åéˆēš„ę¢ä»¶ā€”ā€”ä»»ę„å…©é»žäøčƒ½åŒę™‚ę»æč¶³ ui≤uju_i \le u_j äø” vi≤vjv_i \le v_j ēš„ę¢ä»¶ļ¼ŒåŖę¶‰åŠé»žåœØå…©å€‹ē¶­åŗ¦äøŠēš„ē›øå°å¤§å°ļ¼Œčˆ‡å®ƒå€‘åœØåŗåˆ—äø­ēš„å‡ŗē¾é †åŗē„”é—œć€‚å› ę­¤ļ¼Œē‚ŗäŗ†ę–¹ä¾æåˆ¤ę–·ļ¼Œęˆ‘å€‘åÆä»„å…ˆęŒ‰ uu ęŽ’åŗļ¼Œé€™äø¦äøęœƒę”¹č®Šä»»ä½•äø€å°é»žę˜Æå¦ę§‹ęˆåéˆć€‚

åœØęŽ’åŗå¾Œēš„åŗåˆ—äøŠļ¼Œå°ä»»ę„ę»æč¶³ i<ji < j ēš„å…©é»žļ¼Œui≤uju_{i} \le u_{j} å·²ē”±é †åŗč‡Ŗå‹•äæč­‰ć€‚č‹„å®ƒå€‘åŒå±¬äø€å€‹åéˆļ¼Œvi≤vjv_{i} \le v_{j} å°±äøčƒ½ęˆē«‹ć€‚é€™čæ«ä½æåéˆå…§éƒØēš„ē¬¬äŗŒåŗ§ęØ™åæ…é ˆéžęø›ļ¼švi>vjv_{i} > v_{j}ļ¼Œå³ vv ę²æåŗåˆ—åš“ę ¼äø‹é™ć€‚

åéŽä¾†ēœ‹ļ¼Œå‡” vv åš“ę ¼äø‹é™ēš„å­åŗåˆ—ļ¼Œå…¶äø­ä»»å…©é»žåæ…äøę»æč¶³ vi≤vjv_{i} \le v_{j}ļ¼Œå› ę­¤äøę»æč¶³åÆęŽ„ēŗŒę¢ä»¶ļ¼Œē¢ŗåÆ¦ę˜Æåˆę³•åéˆć€‚

綜上,vv ēš„åš“ę ¼äø‹é™å­åŗåˆ—čˆ‡åéˆäø€äø€å°ę‡‰ļ¼Œęœ€é•·č€…ēš„é•·åŗ¦å³ē‚ŗęœ€å¤§åéˆå¤§å°ć€‚

Success

ęœ€å¤§åéˆå¤§å° = ꌉ T+XT+X ęŽ’åŗå¾Œļ¼ŒTāˆ’XT-X ēš„**ęœ€é•·åš“ę ¼äø‹é™å­åŗåˆ—(LDS)**長度。
ē”± Dilworth å®šē†ļ¼Œęœ€å°‘éˆč¦†č“‹ę•øē­‰ę–¼ę­¤å€¼ļ¼Œå³ę‰€éœ€ēš„ęœ€å°‘äŗŗę•øć€‚

č¤‡é›œåŗ¦åˆ†ęž

  • ę™‚é–“č¤‡é›œåŗ¦ļ¼šO(Nlog⁔N)\mathcal{O}(N \log N)
  • ē©ŗé–“č¤‡é›œåŗ¦ļ¼šO(N)\mathcal{O}(N)

锞锌


Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from bisect import bisect_left


def solve():
n = int(input())

points = []
for i in range(n):
t, x = map(int, input().split())
points.append((t + x, t - x))
points.sort()

# 걂 v ēš„ LDS é•·åŗ¦
f = []
for _, v in points:
idx = bisect_left(f, -v)
if idx == len(f):
f.append(-v)
else:
f[idx] = -v
print(len(f))


if __name__ == "__main__":
solve()