我用土法煉鋼的方法,把所有區間的值都+1,如果加了之後的值是1就代表他是第一次被找到,就在ans+1,最後ans就是答案了,用java實現會對70%後TLE,用python則是35%後TLE,c++就直接AC了
建議想一下為什麼 Java 會 TLE (Python 陣列存取慢就算了),是不是因為方法不對 ? (題外話是這題 Python 方法對,常數不要太大其實也有機會過,Java 的話是方法對肯定會過。)
可以想像一下,構造一個極端測試資料,這裡每個區間都很大,都是 $1 \sim 10^7$ 之類的 (就是題目上面寫的資料範圍),然後有 $10^4$ 個線段區間,長得像下面那樣,那照你的方法也就是要把陣列 $10^{11}$ 個都 $+1$ ,這應該是連 C++ 也沒辦法馬上算出來的。
10000
1 10000000
1 10000000
1 10000000
1 10000000
...
1 10000000
基於某些我不知道的原因,這題沒有這種測試資料,所以土法煉鋼有可能會過,但據我所知官方考試一定會有這種「機車」的資料,真實經歷是以前我高中考 APCS 的時候拿最糟情況時間 $O(N^2)$ 的程式拿去唬爛一題 $N = 10^5$ 的題目,只拿到小子題 ($N$ 很小) 的分數,完整的一分都沒拿到。
對於自己作法有沒有上述提到的問題有疑慮的, 我推薦可以試看看這題,裡面放了我說的極端測資,題目跟條件跟這題都是一樣的 : https://zerojudge.tw/ShowProblem?problemid=f855 (第 3 題 線段覆蓋長度 測資加強版)
最後感謝大家看到這裡