NYOJ 16 (动态规划之嵌套矩形)
来源:互联网 发布:餐饮收银软件 编辑:程序博客网 时间:2024/06/01 10:36
问题描述:
描述
每组测试数据的第一行是一个正正数n,表示该组测试数据中含有矩形的个数(n<=1000)
随后的n行,每行有两个数a,b(0<a,b<100),表示矩形的长和宽
1101 22 45 86 107 93 15 812 109 72 2样例输出
5
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;const int maxn=1010;int G[maxn][maxn];int d[maxn],n;struct note{ int a,b;}tri[maxn];int dp(int i){ int& ans=d[i];//同时改变d[i] if (d[i]>0) return ans; ans=1; for (int j=1;j<=n;j++) { if (G[i][j]) ans=max(ans,dp(j)+1); } return ans;}/*void print_ans(int i){ printf("%d ",i); for (int j=1;j<=n;j++) { if (G[i][j]&&d[i]==d[j]+1) { print_ans(j); break; } }}*/int main(){ int t; scanf("%d",&t); while (t--) { scanf("%d",&n); for (int i=1;i<=n;i++) { int a,b; scanf("%d%d",&a,&b); if (a<b) swap (a,b); tri[i].a=a; tri[i].b=b; } memset (G,0,sizeof (G)); memset (d,0,sizeof (d)); for (int i=1;i<=n;i++) {//构图 for (int j=1;j<=n;j++) { if (i==j) continue; if (tri[i].a>tri[j].a&&tri[i].b>tri[j].b) G[i][j]=1; } } int ans=0; for (int i=1;i<=n;i++) { ans=max(ans,dp(i)); } /* cur记录的是ans的编号,如果有多个解,那么记录第一个 print_ans(cur);//用于输出路径 */ printf("%d\n",ans); } return 0;}
阅读全文
0 0
- NYOJ 16 (动态规划之嵌套矩形)
- nyoj-16-动态规划之最长路-嵌套矩形
- NYOJ 16 矩形嵌套(动态规划)
- 【矩形嵌套 16 动态规划 NYOJ】
- NYOJ-16 矩形嵌套 动态规划
- NYOJ 16 矩形嵌套(动态规划)
- nyoj--16--矩形嵌套(动态规划)
- NYOJ-16-矩形嵌套(动态规划)
- NYoj 16 矩形嵌套[经典动态规划1]
- nyoj 16 矩形嵌套 (DAG上的动态规划)
- nyoj 16 BTOJ 1025: 矩形嵌套问题 【动态规划】
- NYOJ - 16 - 矩形嵌套(DAG最长路,动态规划)
- nyoj 16 嵌套矩形(DAG上的动态规划)
- NYOJ 16 矩形嵌套(动态规划 or 贪心)
- NYOJ 16 矩形嵌套(DAG上的动态规划)
- 动态规划入门之嵌套矩形
- 嵌套矩形 动态规划
- [DAG上的动态规划]NYOJ 矩形嵌套
- 求10 个整数中最大值。
- StringBuffer学习
- apache 的安装
- docker使用
- java中的集几种for循环
- NYOJ 16 (动态规划之嵌套矩形)
- 如何使用高斯消元解决期望DP
- ThinkPHP5 前台模板引入与分离 开发环境debug
- 指针运用(限于NOIP层面)
- POJ 3320 Jessica's Reading Problem G++
- Mongodb的逻辑优化过程
- MAVEN3.5搭建记录
- Java NIO 概述
- 三天速成!香港科技大学TensorFlow课件分享