嵌套矩形(动态规划)(代码片段)

alingmaomao alingmaomao     2022-12-05     757

关键词:

思路:

技术图片先把这些矩形统一 一下,让最长边向下,然后按大小放好。

这样,我们就可以来构建DAG图形, 令,被包含的矩形a与包含的矩形b看成a一一>b的路线,这样就形成了这样的图形:

技术图片,我们一定知道最小矩形一定是不能包含其他矩形的(因为没有矩形比最小矩形还小),同时,知道最大矩形一定不能被包含。(因为没有矩形比最大矩形大)

为什么,我们要考虑最大和最小矩形呢?

最小矩形和最大矩形是这整个dp的边界!同时,给出了dp的走势。

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1e3 + 10;
int dp[maxn], pre[maxn];
struct node int x, y; a[maxn];
bool cmp(node a, node b)
    if (a.x == b.x)return a.y < b.y;
    return a.x < b.x;

int n, x, y;
int t;



int main()
    cin >> t;
    while (t--)
        memset(dp, 0, sizeof(dp));
        cin >> n;
        for (int i = 1; i <= n; ++i)
        
            cin >> x >> y;
            if (x < y)swap(x, y);
            a[i].x = x;        a[i].y = y;
            dp[i] = 1;
        
        sort(a + 1, a + 1 + n, cmp);
//        for (int i = 1; i <= n; ++i)
//            cout << "(" << a[i].x << " ," << a[i].y << ")" << endl;

        for (int i = 1; i <= n - 1;++i)
        for (int j = i + 1; j <= n; ++j)
            if (a[i].x < a[j].x&&a[i].y < a[j].y)
                int sum = 1 + dp[i];
                if (dp[j] < sum) dp[j] = sum; pre[j] = i; 
            
        
        int maxx = 1;
        for (int i = 1; i <= n;++i)
        if (dp[maxx] < dp[i])maxx = i;
    //    Path(maxx);  cout << endl;
        cout << dp[maxx] << endl;
    

 

矩形嵌套-记忆化搜索(dp动态规划)

矩形嵌套时间限制:3000 ms | 内存限制:65535 KB难度:4描写叙述有n个矩形,每个矩形能够用a,b来描写叙述,表示长和宽。矩形X(a,b)能够嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。比如... 查看详情

dp入门——dag上的动态规划

...为DAG上的最长路、最短路或路径计数问题。一、DAG模型【嵌套矩形问题】问题:有n个矩形,每个矩形可以用两个整数a、b描述,表示它的长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d,或者b<c,a<d(相当于把矩形X... 查看详情

嵌套矩阵问题(代码片段)

...可以用两个整数来描述,表示它的长与宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中,当且仅当a<c,b<d或者b<c,a<d(矩阵可以旋转90度)。你的任务是选出尽可能多的矩阵排成一行,使得每一个矩形(除最后一个矩阵)都可以嵌套在后一... 查看详情

剑指offer矩形覆盖(代码片段)

题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 比如n=3时,2*3的矩形块有3种覆盖方法:代码:1//动态规划实现2classSolution3public:4intrectC... 查看详情

剑指offer矩形覆盖(代码片段)

题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 比如n=3时,2*3的矩形块有3种覆盖方法:代码:1//动态规划实现2classSolution3public:4intrectC... 查看详情

动态规划(dynamicprogramming)(代码片段)

...规划解法优化空间变态青蛙跳台阶扩展1:扩展2:矩形覆盖求最大连续子序列的和普通解法优化空间单词拆分普通解法三角型最小路径和普通解法自底向上优化路径总数有障碍的路径总数最小路径和动态规划是分治思想的... 查看详情

矩形嵌套(代码片段)

矩形嵌套时间限制: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... 查看详情

矩形嵌套(dp)(代码片段)

矩形嵌套时间限制: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... 查看详情

动态规划之悬线法模板(最大子矩阵问题)(代码片段)

...,比如“面积最大的长方形、正方形”“周长最长的矩形等等”。可以满足在时间复杂度为O(M*N)的要求,比一般的枚举高效的多,也易于理解。悬线法思路一般地,我们有一张n∗m的图,里面有一些... 查看详情

动态规划悬线法(代码片段)

悬线法是用来处理子矩阵相关的问题,在一个矩形中寻找一个最大的满足条件的矩阵悬线法的基本思路,维护三个数组,l[N][N],r[N][N],up[N][N]。l[N][N]:用来记录在当前这个位置满足条件的左边界,也就是可以往左延... 查看详情

分蛋糕(动态规划)(代码片段)

描述有一块矩形大蛋糕,长和宽分别是整数w、h。现要将其切成m块小蛋糕,每个小蛋糕都必须是矩形、且长和宽均为整数。切蛋糕时,每次切一块蛋糕,将其分成两个矩形蛋糕。请计算:最后得到的m块小蛋糕中,最大的那块蛋... 查看详情

035_最大矩形(代码片段)

知识点:动态规划、单调栈LeetCode第八十五题:https://leetcode-cn.com/problems/maximal-rectangle/submissions/有些题目是真的难,比如这题,答案都不一定抄的明白。语言:GoLang//结合LeetCode84题,逐行计算。抽象问题并结合已有题目的想象力... 查看详情

算法-最大矩形(动态规划)

...:给你一个二维矩阵,权值为False和True,找到一个最大的矩形,使得里面的值全部为True,输出它的面积样例:给你一个矩阵如下[[1,1,0,0,1],[0,1,0,0,1],[0,0,1,1,1],[0,0,1,1,1],[0,0,0,0,1]]输出61.建立模型  这个题如果直接来解决的话... 查看详情

动态规划基本思想(代码片段)

...什么——这就引出了动态规划的真正含义:在一个困难的嵌套决策链中,决策出最优解。动态规划首先,动态规划和递推有些相似(尤其是线性动规),但是不同于递推的是:递推求出的是数据,所以只是针对数据进行操作;而... 查看详情

动态规划_线性动态规划,区间动态规划(代码片段)

...xff1a;代码:最长公共子序列思路:代码:区间动态规划石子合并思路:代码:模板题链接:数字三角形最长递增子序列最长公共子序列石子合并线性规划数字三角形思路:状态表示ÿ 查看详情

nyoj-矩形嵌套(经典dp)(代码片段)

 矩形嵌套时间限制:3000ms|内存限制:65535KB描述有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,... 查看详情

剑指offer---10---动态规划:矩形覆盖

https://www.nowcoder.com/practice/72a5a919508a4251859fb2cfb987a0e6?tpId=13&tqId=11163&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题意我们可以用2*1的小矩形横着或者竖着 查看详情

动态规划(代码片段)

动态规划文章目录动态规划DynamicProgramming例一:fibonacci方法一:递归方法二:动态规划例二:青蛙跳台阶问题方法一:动态规划问题扩展:例三:最大连续子数组和方法:动态规划例四:字符串... 查看详情