标签:旋转 string def art csdn 序列 mit style .net
1 10 1 2 2 4 5 8 6 10 7 9 3 1 5 8 12 10 9 7 2 2
5
#include <iostream> #include <algorithm> #include <cstring> using namespace std; typedef struct { int l,w; }R; R r[1006]; int dp[1006]; bool cmp(R a,R b) { if(a.l!=b.l) return a.l<b.l; return a.w<b.w; } int main() { int t; cin>>t; while(t--) { int n; cin>>n; for(int i=0;i<n;++i) { cin>>r[i].l>>r[i].w; if(r[i].l<r[i].w) //保持长大于宽 swap(r[i].l,r[i].w); } sort(r,r+n,cmp); for(int i=0;i<n;++i) { dp[i]=1;//每个dp对应一个矩形,每个矩形肯定能嵌套自己本身,所以dp[i]=1; for(int j=0;j<i;++j) { if((r[j].l<r[i].l&&r[j].w<r[i].w&&dp[i]<dp[j]+1)|| (r[j].l<r[i].w&&r[j].w<r[i].l&&dp[i]<dp[j]+1)) dp[i]=dp[j]+1; } } int sum=0; for(int i=0;i<n;++i) if(sum<dp[i]) sum=dp[i]; cout<<sum<<endl; } return 0; }
做题的时候想着用最长上升子序列来求,没想到转换为图
看了大佬的代码转化为图也可以,代码链接
https://blog.csdn.net/jiangpeng59/article/details/56666903
标签:旋转 string def art csdn 序列 mit style .net
原文地址:https://www.cnblogs.com/tianzeng/p/9126392.html