题面 【正解】 显然先按a排个序,然后用b乱搞 第一问用D开头的定理求最长下降子序列 第二问乱搞 for (int i=1;i<=n;i++) { int* t=upper_bound(f+1,f+n+1,c[i].b,cmp); c[i].ans=t-f; *t=c[i].b; } 感性理解:相当于维护若干大蛋糕,每次贪心地放比蛋糕顶大而最小的顶 代码 转载于:https://www.cnblogs.com/lstoi/p/9822101.html