TP
由于题目中出现了非常多的1e9范围的数据,所以能够拿来跑循环的一个是n(套餐种类),一个是m(每次哪天租几次),同时 ∑ q i < = 3 e 5 \sum{qi} <= 3e5 ∑qi<=3e5也很令人在意,然后发现几乎不可能再m上直接设置状态,因为时间复杂度会变得非常不合理,所以选择在 ∑ q i \sum{qi} ∑qi上转移,每次租车都属于某一天,那么我们可以根据相隔天数讨论,如果符合可以直接转移,否则在 ∑ q i \sum{qi} ∑qi上二分,由于我们在开始时会对天数排序,那么越往后天数也会越大。知道我们找到一个点,这个点刚好是我们租这种车还没过期的最后一天,我们更新这一天即可,答案就是最后一天的dp值。
非常合理的dp,但是状态设置很巧妙,确实是个非常不错的思维题。
#include "bits/stdc++.h"
using namespace std;
#define int long long
#define pii pair<int