首页 > 其他分享 >力扣2713 2024.6.19

力扣2713 2024.6.19

时间:2024-06-19 13:43:41浏览次数:3  
标签:2713 now 2024.6 int max 力扣 second dpl dph

原题网址:此处为链接

个人难度评价:1700

分析:
DP顺序很重要,从大数递推到小数保证了不会每次都是最优子结构而不会有后效性。
开了个map来方便二分大于当前数的最小数,状态转移方程显然,记h[x]与l[y]表示第x行小于当前值的最优和第y列小于当前值的最优:
dp[x][y] = max(f[x], l[y])
注意h和l每次也要更新

源码:

// 2713
#include <bits/stdc++.h>
#define pp pair<int, pair<int, int>>
using namespace std;
const int INF = 0x3f3f3f3f;

class Solution {
public:

    int maxIncreasingCells(vector<vector<int>>& mat) {
        int n = mat.size();
        int m = mat[0].size();
        deque<pp> now;
        for (int i=0; i<n; i++){
            for (int j=0; j<m; j++){
                now.push_back({-mat[i][j], {i+1, j+1}});
            }
        }
        sort(now.begin(), now.end());
        map<int, int> dph[n+1], dpl[m+1];
        int f[n+1][m+1];
        memset(f, 0 ,sizeof(f));
        int ans = 0;
        int v, x, y;
        while (now.size()){
            v = -now.front().first;
            x = now.front().second.first;
            y = now.front().second.second;
            now.pop_front();
            if (dph[x].empty()){
                f[x][y] = max(f[x][y], 1);
                dph[x][v] = 1;
            }
            else{
                f[x][y] = max(f[x][y], dph[x].upper_bound(v)->second+1);
            }
            if (dpl[y].empty()){
                f[x][y] = max(f[x][y], 1);
                dpl[y][v] = 1;
            }
            else{
                f[x][y] = max(f[x][y], dpl[y].upper_bound(v)->second+1);
            }
            dph[x][v] = max(dph[x][v], f[x][y]);
            dpl[y][v] = max(dpl[y][v], f[x][y]);
            ans = max(ans, f[x][y]);
        }
        return ans;
    }
};

标签:2713,now,2024.6,int,max,力扣,second,dpl,dph
From: https://www.cnblogs.com/TrainerMarvin/p/18256074

相关文章

  • N皇后-力扣
    按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个不同的n皇后问题的......
  • 2024.6 做题记录
    395.CF717AFestivalOrganization&P5320[BJOI2019]勘破神机396.square869120Contest#3GSumofFibonacciSequence特判\(n=1\)。将\(n,m\)都减\(1\),答案即为\[[x^m]\frac{1}{(1-x-x^2)(1-x)^n}\]若能把这个分式拆成\(\frac{A(x)}{(1-x)^n}+\frac{......
  • 2024.6.17鲜花/错误的号码
    XY星的星际新闻报一直不太畅销,所以报纸上会有一些广告,毕竟星际新闻局的非机器人员工也得吃饭。有一则广告是这样的:【数据删除】研学基地位于【数据删除】,该研学基地致力于让学生体验一个幻想纪前的生活并培养学生不借助现代高科技的群居生活能力。该研学基地将于幻想历元年六......
  • DAY4-力扣刷题
    1.四数之和18.四数之和-力扣(LeetCode)给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a],nums[b],nums[c],nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0<=a,b,c,d <na......
  • 云原生周刊:Harbor v2.11 版本发布 | 2024.6.17
    开源项目推荐DeschedulerDescheduler是一个工具,可用于优化Kubernetes集群中Pod的部署位置。它可以找到可以移动的Pod,并将其驱逐,让默认调度器将它们重新调度到更合适的节点上。ProwlerProwler是一款适用于AWS、Azure、GCP和Kubernetes的开源安全工具,用于进行安全评......
  • Java速成笔记 2024.6.17版
    变量:可以变化的容器不同变量可以存储不同类型的值变量声明方法:变量类型变量名=初始值;E.G.inta=1;变量类型:整型:intlong浮点数:floatdouble布尔:boolean字符串:String字符:char变量命名注意事项:不能重名不能以数字开头常量:关键字:final语法:finalfl......
  • 2024.6.16
    publicclassSparkSQL09_Source_Req{publicstaticvoidmain(String[]args){//TODO在编码前,设定Hadoop的访问用户System.setProperty("HADOOP_USER_NAME","atguigu");finalSparkSessionsparkSession=SparkSession......
  • 2024.6.16
    2024.6.16【执笔洇墨铸流年,仗剑酌酒碎绮梦】Sunday五月十一父亲节模拟赛A.正确答案【题目描述】小H与小Y刚刚参加完UOIP外卡组的初赛,就迫不及待的跑出考场对答案。“吔,我的答案和你都不一样!”,小Y说道,”我们去找神犇们问答案吧”。外卡组试卷中共有m道判断题,小H与小Y......
  • 2024.6 -> 做题记录与方法总结
    2024/6/151.P4363[九省联考2018]一双木棋chess经典轮廓线dp使用的关键在于发现状态数并不多,用\(n\)进制数来表现轮廓的状态\(dp\)的转移和轮廓线息息相关如图,蓝色轮廓线状态只能转移到含一个紫色的状态因为$1\leqn,m\leq10$用\(11\)进制压缩状态就可......
  • 算法第六天:力扣第977题有序数组的平方
    一、977.有序数组的平方的链接与题目描述977.有序数组的平方的链接如下所示:https://leetcode.cn/problems/squares-of-a-sorted-array/description/https://leetcode.cn/problems/squares-of-a-sorted-array/description/   给你一个按 非递减顺序 排序的整数数组 n......