dp求了一遍最大上升子序列,45分

P1233 木棍加工

@[Lemon_zqp](/user/551630) 这是二分吧……
by 2044_space_elevator @ 2023-07-13 12:45:52


@[Lemon_zqp](/user/551630) 要二分干什么?
by Lemon_zqp @ 2023-07-13 12:51:06


@[Lemon_zqp](/user/551630) 最大不下降子序列吧
by wuhongzhen @ 2023-07-13 12:56:19


@[Lemon_zqp](/user/551630) 还有就是为什么是sort(m+1,m+n+2,cmp),不应该是sort(m+1,m+n+1,cmp)吗
by wuhongzhen @ 2023-07-13 12:57:57


@[wuhongzhen](/user/369248) 不是搜了吗,但45
by Lemon_zqp @ 2023-07-13 12:58:12


@[wuhongzhen](/user/369248) 艹,打错了
by Lemon_zqp @ 2023-07-13 12:59:25


@[wuhongzhen](/user/369248) 改了,还是45
by Lemon_zqp @ 2023-07-13 13:00:15


@[Lemon_zqp](/user/551630) ```cpp #include<bits/stdc++.h> #define ll long long using namespace std; int dp[5005],ans; struct mg { int l, w; }m[5005]; bool cmp(mg x, mg y) { if(x.l != y.l) { return x.l > y.l; } else { return x.w > y.w; } } int main() { int n; cin >> n; for(int i = 1; i <= n; i++) { cin >> m[i].l >> m[i].w; } sort(m + 1, m + n + 1, cmp); for(int i = 1; i <= n; i++) { for(int j = 1; j <= i - 1; j++) { if(m[i].w > m[j].w) { dp[i]=max(dp[i],dp[j]+1); } } ans=max(ans,dp[i]); } cout << ans+1; return 0; } ```
by wuhongzhen @ 2023-07-13 13:05:27


@[Lemon_zqp](/user/551630) 大改了一下
by wuhongzhen @ 2023-07-13 13:05:40


@[Lemon_zqp](/user/551630) ans求木棍加工用时,不包括一开始的一分钟,所以最后加一个1
by wuhongzhen @ 2023-07-13 13:07:34


| 下一页