最弱红名求助

P1233 木棍加工

``` //code by rainman //O(2nlogn+n) #include<bits/stdc++.h> using namespace std; const int MAXN =5000+10; int d[MAXN],n; struct data{ int l,w; }info[MAXN]; bool cmp(data a,data b) { if(a.l==b.l)return a.w>b.w; return a.l>b.l; } int LIS() { d[1]=info[1].w; int len=1; for(int i=2;i<=n;i++) { if(info[i].w>=d[len])d[++len]=info[i].w; else { int j=upper_bound(d+1,d+len+1,info[i].w)-d; d[j]=info[i].w; } } return len; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) //O(n) scanf("%d%d",&info[i].l,&info[i].w); sort(info+1,info+1+n,cmp); //O(nlogn) printf("%d",LIS()); //O(nlogn) return 0; } ```
by xiangling @ 2018-08-11 19:53:13


咦,图片挂了。。
by xiangling @ 2018-08-11 19:56:05


![](http://tu.shenlancloud.club/images/2018/08/11/pixivtimg.md.jpg)
by xiangling @ 2018-08-11 19:58:02


修好了$qwq$
by xiangling @ 2018-08-11 19:58:43


没有人啊。。。
by xiangling @ 2018-08-11 19:59:28


我凉了。。。
by xiangling @ 2018-08-11 20:04:43


哈哈
by 蓝莲花__ @ 2018-08-13 20:22:56


额我我我我。。。要。。反驳。
by 黄柠檬11 @ 2018-09-12 21:49:16


@[rainman](/space/show?uid=55804) ~~我。。。才是。。。最弱红名~~
by 黄柠檬11 @ 2018-09-12 21:49:43


@[rainman](/space/show?uid=55804) 题意并不是lis,而是找到一个lis删除它然后再找下一个直至数组为空。 贪心地想,反正得拿到空为止,按w为关键字排序后,把能放在当前物品之后的物品贪心的拿走就好,不一定要最优的拿法。 蒟蒻上代码: ``` while(!q.empty()) { x=q[0];q.clear(); for(int i=0;i<l;++i) if(a[i+1].y>=x)x=a[i+1].y; else q.push_back(a[i+1].y); l=q.size(); for(int i=0;i<l;++i)a[i+1].y=q[i]; cnt++; } ``` 为了这道题我wa了五次了都。。。。 千万别相信题解。。。。可能题目后来改过描述了
by 田阙西 @ 2018-09-23 17:53:53


| 下一页