nyoj 16 嵌套矩阵(DAG图)
来源:互联网 发布:复旦东区宿舍网络 编辑:程序博客网 时间:2024/05/16 19:01
经典的嵌套矩阵问题加路径输出
将矩阵间能否嵌套转化成一个DAG图上的最长路问题
对于最长路径的打印:
若只需要字典序最小很简单
对于打印所有,采用递归实现(有点类似全排列的实现)不知道正确性,有没有神犇说一下orz
Code:
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;i--)using namespace std;const int N=1e3+10,M=1e6+10;int n;struct Matrix{ int x,y; Matrix(int x=0,int y=0):x(x),y(y){}}a[N];int f[N],G[N][N];int dp(int i){ if(f[i]) return f[i]; for(int j=1;j<=n;j++) if(G[i][j]) f[i]=max(f[i],dp(j)+1); return f[i];}void print_ans(int id){ printf("%d ",id); for(int i=id;i<=n;i++) if(G[id][i]&&f[id]==f[i]+1){ print_ans(i); break; }}int r[N],ans;void print_ans2(int id,int len){ if(dp(id)==0){ if(len==ans+1) { fo(i,1,len) printf("%d ",r[i]); printf("\n"); } return ; } for(int i=id;i<=n;i++){ if(G[id][i]&&f[id]==f[i]+1){ r[len+1]=i; print_ans2(i,len+1); } }} int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d",&n); fo(i,1,n) scanf("%d%d",&a[i].x,&a[i].y); memset(G,0,sizeof(G)); fo(i,1,n) fo(j,1,n){ if(i==j) continue; if((a[i].x>a[j].x&&a[i].y>a[j].y)||(a[i].x>a[j].y&&a[i].y>a[j].x)) G[i][j]=1; } memset(f,0,sizeof(f)); ans=-1; int cur; fo(i,1,n) if(ans<dp(i)) ans=dp(i),cur=i; printf("%d\n",ans+1); print_ans(cur); printf("\n"); print_ans2(cur,1); } return 0;}
0 0
- nyoj 16 嵌套矩阵(DAG图)
- nyoj 16 矩阵嵌套
- DAG模型-嵌套矩阵
- NYOJ-----16---矩阵嵌套DP
- NYOJ 16 矩形嵌套 (DAG上的DP)
- NYOJ 16 矩形嵌套(DAG上的DP)
- nyoj 16 矩形嵌套 (DAG上的动态规划)
- nyoj 16 矩形嵌套(DAG上的dp)
- nyoj 16 矩形嵌套 (DAG上的DP)
- NYOJ 16 矩形嵌套 DAG或排序+DP
- NYOJ - 16 - 矩形嵌套(DAG最长路,动态规划)
- nyoj 16 嵌套矩形(DAG上的动态规划)
- NYOJ 16 矩形嵌套(DAG上的动态规划)
- NYoj 16 矩形嵌套 (DAG上最长路
- 嵌套矩阵之DAG类型
- DAG 动态规划 矩阵嵌套
- NYOJ 16 矩形嵌套 【DAG模型——嵌套矩形问题】
- NYOJ 16-矩阵嵌套:动态规划
- python http post json 加密发送
- Windows 与docker主机和container容器之间的文件共享
- Linux目录结构
- linux基础学习12
- android studio 报错之 UTF-8
- nyoj 16 嵌套矩阵(DAG图)
- Ubuntu14.04双系统的安装笔记
- 项目从eclipse中复制到myeclipse中,修改了项目名却无法访问路径
- 没想到你是这样的正则
- Spring MVC框架的详细流程
- 网页开发常用的插件
- 利用Lammps 运行已经得到的.data文件
- uva 10603 fill
- 功能缺陷的测试方法流程