NYOJ 16 矩形嵌套

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

题意:给出若干矩形的长和宽,小的矩形可以嵌套在大的矩形中,求矩形最多的嵌套中矩形的个数
做法:嵌套关系是二元关系,转化为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;
}

           



目录
相关文章
|
Java
Java Stream处理2个List集合取交集、并集、差集
Java Stream处理2个List集合取交集、并集、差集
1521 0
|
C++
关于数组和指针的笔试题解析(详解)(下)
关于数组和指针的笔试题解析(详解)
225 0
|
Kubernetes Cloud Native 应用服务中间件
Cilium 首次集成国内云服务,阿里云 ENI 被纳入新版本特性
Cilium 是一个基于 eBPF 的高性能容器网络项目,提供网络、可观测性、安全三方面的解决方案。
Cilium 首次集成国内云服务,阿里云 ENI 被纳入新版本特性
|
数据处理 Python
总结了12个Numpy高级函数,完美解决数据处理,拿来即用!
总结了12个Numpy高级函数,完美解决数据处理,拿来即用!
总结了12个Numpy高级函数,完美解决数据处理,拿来即用!
这应该是最全的PCA原理总结了(上)
主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA,下面我们就对PCA的原理做一个总结。
1057 0
|
存储 缓存 文件存储
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
33254 201
如何保证分布式文件系统的数据一致性
|
设计模式 存储 监控
设计模式(C++版)
看懂UML类图和时序图30分钟学会UML类图设计原则单一职责原则定义:单一职责原则,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。bad case:IPhone类承担了协议管理(Dial、HangUp)、数据传送(Chat)。good case:里式替换原则定义:里氏代换原则(Liskov 
36823 22
设计模式(C++版)
|
存储 编译器 C语言
抽丝剥茧C语言(初阶 下)(下)
抽丝剥茧C语言(初阶 下)

热门文章

最新文章