题解:CF2126D This Is the Last Time
你有一个初始硬币价值
贪心。
显然,
按操作的
为什么这样贪心是正确的呢?是否有这样的可能,我们需要先进行某次操作
v 使得\text{cur} 变小,进入另一个操作u 的区间,再通过操作u 使得\text{cur} 变大?其实是有这样的可能的,但是这道题不会。核心的原因在于
\text{real}_{i}\leq r_{i} 。最开始
\text{cur} 不在u 的操作区间的原因是\text{cur}>r_{u} ,即使我们最终通过一系列花里胡哨的操作使得\text{cur}^{'} 进入了u 的可操作区间[l_{u},r_{u}] ,\text{cur}>r_{u}\geq \text{real}_{u} ,最终变劣了。
int T,n,k,l[N],r[N],order[N];
bool cmp(int u,int v){
if (l[u]==l[v])
return r[u]>r[v];
return l[u]<l[v];
}
int main(){
T=read();
while (T--){
n=read();k=read();
for(int i=1;i<=n;i++){
l[i]=read();
read();
r[i]=read();
order[i]=i;
}
sort(order+1,order+n+1,cmp);
for(int i=1;i<=n;i++)
if (l[order[i]]<=k&&k<=r[order[i]])
k=r[order[i]];
printf("%d\n",k);
}
return 0;
}