NYOJ 16 矩形嵌套

题意:给出若干矩形的长和宽,小的矩形可以嵌套在大的矩形中,求矩形最多的嵌套中矩形的个数
做法:嵌套关系是二元关系,转化为DAG上的最长路径问题,使用邻接表+状态转移方程即可,经典递归思想。

代码:

//nyoj 16

#include
#include
#include
using namespace std;
const int maxn = 150;
int graph[maxn][maxn];
int d[maxn], n, a[maxn], b[maxn];
int max(int a, int b){
    return a>b?a:b;
}
int dp(int i){
    if(d[i]>0) return d[i];
    d[i] = 1;
    for(int j=1; j<=n; j++){
        if(graph[i][j]) d[i] = max(d[i], dp(j) + 1);
    }
    return d[i];
}
int main(){
    int cas, i, j;
    scanf("%d", &cas);
    while(cas--){
        memset(d, 0, sizeof(d));
        memset(graph, 0, sizeof(graph));
        scanf("%d", &n);
        for(i=1; i<=n; i++)
            scanf("%d%d", &a[i], &b[i]);
        for(i=1; i<=n; i++){
            for(j=1; j<=n; j++){
                if((a[i]
                    graph[i][j] = 1;
            }
        }
        int ans = 0;
        for(i=1; i<=n; i++){
            int p = dp(i);
            ans = max(ans, p);
        }
        printf("%d\n", ans);
    }
    return 0;
}
时间: 2024-10-14 09:11:16

NYOJ&#160;16&#160;矩形嵌套的相关文章

NYOJ 16(矩形嵌套)

  矩形嵌套 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度).例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中.你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内.   输入 第一行是一个正正数N(0<N<10),表示测试数据

NYOJ&amp;#160;36&amp;#160;LCS&amp;#160;最长公共子序列

最长公共子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列. tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence).其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列. 输入 第一行给出一个整数N(0 接下来每组数据两行,分别为待测的两

矩形嵌套

1 /* 2 不是贪心,若是先按长排序在按宽,若是长很大宽很小 ,则若是后边款稍微大一些就不行了 3 */ 4 #include <stdio.h> 5 #include <iostream> 6 #include <cstring> 7 #include <algorithm> 8 using namespace std; 9 10 const int N = 1005; 11 typedef struct Node 12 { 13 int a; 14 i

AES加密时抛出java.security.InvalidKeyException:&amp;#160;Illegal&amp;#160;key&amp;#160;size&amp;#160;or&amp;#160;def

原文:AES加密时抛出java.security.InvalidKeyException: Illegal key size or def  使用AES加密时,当密钥大于128时,代码会抛出 java.security.InvalidKeyException: Illegal key size or default parameters Illegal key size or default parameters是指密钥长度是受限制的,java运行时环境读到的是受限的policy文件.文件位于$

Visual&amp;#160;Studio&amp;#160;中用管理员权限运行、调试程序

原文:Visual Studio 中用管理员权限运行.调试程序 一个Sample小程序,用于验证WoW64的Windows Registry的读写访问.在Visual Studio 2010中调试运行,程序显示没有权限在Windows Registry中创建key   把Release版的该程序以管理员权限执行,结果符合预期,一切顺利.   那么在VS的IDE框架内,如何给debug运行的程序以管理员权限?网上搜了一下,不得要领.   没办法,关闭VS后,以管理员权限重启VS,再debug运行,

VC6.0下的辅助工具:Visual&amp;#160;Assist&amp;#160;X

Visual Assist X Visual.Assist.X是一款非常好的Visual Studio .NET 2003.2002插件,支持C/C++.C#.ASP.Visual Basic.Java和HTML等语言,也支持VC++6.VC++5,能自动识别各种关键字.系统函数.成员变量.自动给出输入提示.自动更正大小写错误.自动标示错误等,有助于提高开发过程地自动化和开发效率. 使用说明: 1.首先请确认你已经卸载了此程序旧的版本! 2.运行Setup目录中的程序安装原版程序! 3.复制CR

【Xamarin开发 Android 系列 3】循序渐进的学习顺序

原文:[Xamarin开发 Android 系列 3]循序渐进的学习顺序 指定合理的学习步骤,将各个技术点进行强化.慢慢 的就从点到线 到面的飞跃,一切仅仅是时间问题,开始前,请记住,学习是最佳的投资方式.风险成本极小,但是收货极佳. 用最小的杠杠,撬动爆发力极强的财富,那就是学习和经验的累积的过程!      [学习顺序-1 国内篇] [Xamarin Android开发实战基础篇] 第1章 Xamarin开发Anroid应用介绍 11.1 Xamarin基本知识 11.1.1 Xamarin

安卓面试题绝密宝典

1. 什么是Activity? 四大组件之一,一般的,一个用户交互界面对应一个activity setContentView() ,// 要显示的布局 button.setOnclickLinstener{ } , activity 是Context的子类,同时实现了window.callback和keyevent.callback, 可以处理与窗体用户交互的事件.   我开发常用的的有FragmentActivitiy,ListActivity  , PreferenceActivity ,T

Photoshop快速制作搭边风格图标教程分享

给各位Photoshop软件的使用者们来详细的解析分享一下快速制作搭边风格图标的教程. 教程分享: 先来个最终效果图,是不是很可爱啊!!!   1.新建一个追波尺寸的画布800*600,背景色选白色,名称为描边风格小图标,注意分辨率为72   2.画一个300*300的圆形,填充颜色为#ffdb00,描边为12像素的#000000的黑色描边.注意这里描边的风格应该选居中描边,结尾和转角选择圆角形式.   3.然后我们ctrl+j复制圆形图层,并分别命名为小太阳描边和小太阳填充.并将小太阳填充的图