题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2044

还以为是CDQ。发现自己不会三维以上的……

第一问可以n^2。然后是求最长不下降子序列吗?dilworth好像不能用吧。

那就是能从自己转移到哪些状态就从自己向哪些状态连边,然后就是最小路径覆盖了。用二分图的 n-最大匹配 。

注意:没有位置的限制所以可以先按 x 排序!

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=N*N;
int n,hd[N<<],xnt,to[M],nxt[M],dp[N],ans,per[N];
bool vis[N];
struct Node{
int x,y,z;
bool operator< (const Node &b) const
{return x<b.x;}
}a[N];
struct Ed{
int x,y;Ed(int x=,int y=):x(x),y(y) {}
}ed[M];
void add(int x,int y)
{
to[++xnt]=y;nxt[xnt]=hd[x];hd[x]=xnt;
}
bool dfs(int cr)
{
for(int i=hd[cr],v;i;i=nxt[i]) if(!vis[v=to[i]])
{
vis[v]=;
if(!per[v]||dfs(per[v]))
{
per[v]=cr;return true;
}
}
return false;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
sort(a+,a+n+);
for(int i=;i<=n;i++)
{
dp[i]=;
for(int j=;j<i;j++)
if(a[j].x<a[i].x&&a[j].y<a[i].y&&a[j].z<a[i].z)
dp[i]=max(dp[i],dp[j]+),ed[++xnt]=Ed(j,i);
ans=max(ans,dp[i]);
}
printf("%d\n",ans); ans=; int tmp=xnt; xnt=;
for(int i=;i<=tmp;i++) add(ed[i].x,ed[i].y);
for(int i=;i<=n;i++)
{
memset(vis,,sizeof vis);
ans+=dfs(i);
}
printf("%d\n",n-ans);
return ;
}

最新文章

  1. Java排序算法——冒泡排序
  2. 第3章 jQuery的DOM操作
  3. linux程序设计1
  4. 机器学习之Hash集合问题
  5. MongoDB 入门之基础 DDL
  6. 解决ubuntu下安装phpmyadmin访问不了的问题
  7. DC-EPC小结
  8. bzoj3261 可持久化trie
  9. Bzoj 4034: [HAOI2015]T2 树链剖分,子树问题,dfs序
  10. ssh注解开发
  11. C语言随笔_fopen
  12. Banner图二三事
  13. 文件操作(File类等)API摘要
  14. priority_queue和sort应用
  15. 免费的DDos网络测试工具集合
  16. GitLab配置后收取不到邮件问题
  17. 图片处理服务 ImageMagick 的安装和使用
  18. yield send 的一些使用细节
  19. 第八次作业(课堂实战)- 项目UML设计(团队)
  20. python装饰器语法

热门文章

  1. windy数(简单数位DP)
  2. JVM对象
  3. 3.26课&#183;&#183;&#183;&#183;&#183;&#183;&#183;&#183;&#183;window.document对象
  4. .vimrc .bashrc
  5. [原创]java WEB学习笔记38:EL 中的 11个 隐含对象 详解
  6. [原创]java WEB学习笔记37:EL表达式(简介,运算符,自动类型转换,保留字,隐含对象)
  7. 0423 hashlib模块、logging模块、configparse模块、collections模块
  8. web前端框架之自定义form表单验证
  9. location记录&lt;18.7.21&gt;
  10. Cocos2dx版本与CocosBuilder版本匹配问题