题目链接:UVA - 103

题意:现有k个箱子,每个箱子可以用n维向量表示。如果一个箱子的n维向量均比另一个箱子的n维向量大,那么它们可以套接在一起,每个箱子的n维向量可以互相交换值,如箱子(2,6)可以和箱子(7,3)套接在一起。求出套接的箱子最多的个数前提下任意一种解决方案。

算法:抛开n维不看,本题就是一个DP的最长上升子序列问题,现在加上了n维的限制,想想也不是很难吧,在DP过程中判断每一维都满足条件即可。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define inf 0x7fffffff
using namespace std;
typedef long long LL; int k,n;
int dp[],pre[];
struct node
{
int an[];
int id;
friend bool operator < (node a,node b)
{
for (int i= ;i<n ;i++)
{
if (a.an[i] != b.an[i]) return a.an[i] < b.an[i];
}
}
}arr[]; void printOut(int u)
{
if (pre[u]!=-) printOut(pre[u]);
if (pre[u]==-) printf("%d",arr[u].id+ );
else printf(" %d",arr[u].id+ );
} int main()
{
while (scanf("%d%d",&k,&n)!=EOF)
{
memset(dp,,sizeof(dp));
memset(pre,-,sizeof(pre));
for (int i= ;i<k ;i++)
{
for (int j= ;j<n ;j++)
scanf("%d",&arr[i].an[j]);
arr[i].id=i;
sort(arr[i].an,arr[i].an+n);
}
sort(arr,arr+k);
// for (int i=0 ;i<k ;i++)
// {
// for (int j=0 ;j<n ;j++)
// cout<<arr[i].an[j]<<" ";
// cout<<endl;
// }
for (int i= ;i<k ;i++)
{
int temp=;
for (int j= ;j<i ;j++)
{
int flag=;
for (int u= ;u<n ;u++)
if (arr[i].an[u]<=arr[j].an[u]) {flag=;break; }
if (!flag && dp[j]>temp)
{
temp=dp[j];
pre[i]=j;
}
}
dp[i]=temp+;
}
int maxlen=-,num=;
for (int i= ;i<k ;i++)
{
if (dp[i]>maxlen)
{
maxlen=dp[i];
num=i;
}
}
printf("%d\n",maxlen);
printOut(num);
printf("\n");
}
return ;
}

最新文章

  1. bzoj1492 斜率优化|cdq分治
  2. C++写一个带参数运行的程序
  3. SpringBoot的简单应用以及部署
  4. 初识ASP.NET CORE:三、Middleware
  5. 韩系高端PK:whoo后VS雪花秀(转载)
  6. 转载python2进制打包相关
  7. ubuntu 状态栏不显示时间
  8. wrap device
  9. 关于 RTMP RTMPT RTMPS RTMPE RTMPTE RTMFP AMF 简介
  10. LA 3644 X-Plosives
  11. SQLite DBHelp
  12. 系统学下POWERSHELL吧,工作当中可能用得到呢。不能像以前那样修修改改了。
  13. 第5章 不要让线程成为脱缰的野马(Keeping your Threads on Leash) ----初始化一个线程
  14. 【JAVA】hashcode() &amp; equals()
  15. 启动django应用报错 “Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。”
  16. Mac使用Gradle上传jar到中央仓库(最完整的采坑记录)
  17. [CentOS_7.4]Linux编译安装ffmpeg
  18. sql server 性能调优之 资源等待 CXPACKET
  19. 新装mysql数据库登陆不上去(账号密码正确)
  20. 随机森林RF、XGBoost、GBDT和LightGBM的原理和区别

热门文章

  1. 深入理解net core中的依赖注入、Singleton、Scoped、Transient(四)【转】
  2. Java的HttpClient的实现
  3. [转]busybox中telnet 功能添加
  4. 在linux中启动mysql服务的命令
  5. java8 获取对象中满足条件的金额之和
  6. h5页面添加背景音乐
  7. HDU1285 裸的拓扑排序
  8. 【调试】js调试console.log使用总结图解(重要)
  9. 使用QML创建界面(转)
  10. 手一抖误删了根目录 /usr 之后的挽救过程