5815. 扣分后的最大得分

給你一個 m x n 的整數矩陣 points (下標從 0 開始)。一開始你的得分為 0 ,你想最大化從矩陣中得到的分數。

你的得分方式為:每一行 中選取一個格子,選中坐標為 (r, c) 的格子會給你的總得分 增加 points[r][c] 。

然而,相鄰行之間被選中的格子如果隔得太遠,你會失去一些得分。對于相鄰行 r 和 r + 1 (其中 0 <= r < m - 1),選中坐標為 (r, c1) 和 (r + 1, c2) 的格子,你的總得分 減少 abs(c1 - c2) 。

請你返回你能得到的 最大 得分。

abs(x) 定義為:

如果 x >= 0 ,那么值為 x 。
如果 x < 0 ,那么值為 -x 。

示例 1:
在這里插入圖片描述

輸入:points = [[1,2,3],[1,5,1],[3,1,1]]
輸出:9
解釋:
藍色格子是最優方案選中的格子,坐標分別為 (0, 2),(1, 1) 和 (2, 0) 。
你的總得分增加 3 + 5 + 3 = 11 。
但是你的總得分需要扣除 abs(2 - 1) + abs(1 - 0) = 2 。
你的最終得分為 11 - 2 = 9 。

image.png

解題思路

數組定義

dp[i]代表在數組的最后一行選擇第i列格子時的最大得分

狀態轉移

dp[i]只由上一行決定,樸素的想法是對于每一個dp[i]都遍歷上一行的所有值,找出減去abs(c1 - c2)最大的那個得分,但是我們可以進行優化只維護上一行中位于i左邊的最大得分lMax和i右邊的最大得分rMax,通過在線性時間內掃描一遍i的同時,維護lMax和rMax,而dp[i]=max(t[i],lMax-1,rMax-1)(t[i]為上一行的dp[i])

代碼

class Solution {public long maxPoints(int[][] points) {int m=points[0].length,n=points.length;long[] dp =new long[m];for (int i=0;i<n;i++){long lMax=0,rMax=0;long[] t = Arrays.copyOf(dp, m);for (int j=0;j<m;j++){lMax=Math.max(lMax-1,dp[j]);t[j]=Math.max(t[j],lMax);}for (int j=m-1;j>=0;j--){rMax=Math.max(rMax-1,dp[j]);t[j]=Math.max(t[j],rMax);}for (int j=0;j<m;j++){t[j]+=points[i][j];}dp=t;}long res=0;for (int j=0;j<m;j++){res= Math.max(res,dp[j]);}return res;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390481.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390481.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390481.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

您有一個上云錦囊尚未領取!

前期&#xff0c;我們通過文章《確認過眼神&#xff1f;上云之路需要遇上對的人&#xff01;》向大家詳細介紹了阿里云咨詢與設計場景下的五款專家服務產品&#xff0c;企業可以通過這些專家服務產品解決了上云前的痛點。那么&#xff0c;當完成上云前的可行性評估與方案設計后…

怎么從運營轉到前端開發_我如何在16個月內從銷售人員轉到前端開發人員

怎么從運營轉到前端開發On August 18, 2015, I was on a one-way flight headed to Copenhagen from Toronto Pearson Airport. I was starting my two semester exchange at the Copenhagen Business school. 2015年8月18日&#xff0c;我乘坐單程飛機從多倫多皮爾遜機場前往哥…

Python os.chdir() 方法

概述 os.chdir() 方法用于改變當前工作目錄到指定的路徑。 語法 chdir()方法語法格式如下&#xff1a; os.chdir(path) 參數 path -- 要切換到的新路徑。 返回值 如果允許訪問返回 True , 否則返回False。 實例 以下實例演示了 chdir() 方法的使用&#xff1a; #!/usr/bin/pyth…

oracle認證考試_Oracle云認證–通過此3小時免費課程通過考試

oracle認證考試This Oracle Cloud Certification exam will take – on average – about one week of study to prepare for. Most people who seriously commit to their studies are ready to pass the exam within about four days.這項Oracle Cloud認證考試平均需要大約一…

git 修改遠程倉庫源

自己已經寫好了一個項目&#xff0c;想上傳到 github github 創建新項目 新建 README.md &#xff0c; LICENSE 本地項目添加 github 遠程倉庫源 不是git項目git remote add origin https://USERNAME:PASSWORDgithub.com/USERNAME/pro.git已是git項目&#xff0c;先刪除再添加 …

Docker 常用命令備忘錄

build鏡像docker build -t"name" . 復制代碼后臺運行docker run -d -i -t 14a21c118315 /bin/bash 復制代碼刪除鏡像docker image rmi -f 300de37c15f9 復制代碼停止運行的鏡像docker ps docker kill (id) 復制代碼進入鏡像docker attach 29f2ab8e517c(ps id) 復制…

mvp最小可行產品_最低可行產品–如何為您的項目建立MVP以及為什么要這樣做

mvp最小可行產品具有足夠功能的產品可以收集全面的定性反饋 (A product with just enough features to gather comprehensive qualitative feedback) Proof of concept, prototypes, wireframes, mockups… what actually constitutes a Minimum Viable Product (MVP)?概念驗證…

composer 更改為中國鏡像

composer 更改為中國鏡像 $ composer config -g repo.packagist composer https://packagist.phpcomposer.com 轉載于:https://www.cnblogs.com/love-snow/articles/8111410.html

人人都能學會的python編程教程(基礎篇)完整版

人人都能學會的python編程教程1&#xff1a;第一行代碼 人人都能學會的python編程教程2&#xff1a;數據類型和變量 人人都能學會的python編程教程3&#xff1a;字符串和編碼 人人都能學會的python編程教程4&#xff1a;關系運算符與循環 人人都能學會的python編程教程5&#x…

劍指 Offer 56 - I. 數組中數字出現的次數

一個整型數組 nums 里除兩個數字之外&#xff0c;其他數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。要求時間復雜度是O(n)&#xff0c;空間復雜度是O(1)。 示例 1&#xff1a; 輸入&#xff1a;nums [4,1,4,6] 輸出&#xff1a;[1,6] 或 [6,1] 示例 2&#xff1a…

表達愛意的程序_如何像程序員一樣表達愛意??

表達愛意的程序Today is Valentines Day! &#x1f60d; 今天是情人節&#xff01; &#x1f60d; How nice would it be if you sent a Romantic Message every hour to your loved one? But even better... 如果您每小時向您所愛的人發送一封浪漫的短信&#xff0c;那將有多…

工作中的小問題

1、a標簽的選擇問題 需要修改帶class的a標簽的hover的文字顏色&#xff0c;方式如下 <style>a.egHyperlink:hover{color:red;} </style> <a href"#" class"egHyperlink">smile</a> 復制代碼2、hr分割線 需要一條粉紅色的分割線&am…

More DETAILS! PBR的下一個發展在哪里?

最近幾年圖形學社區對PBR的關注非常高&#xff0c;也許是由于Disney以及一些游戲引擎大廠的助推&#xff0c;也許是因為它可以被輕松集成進實時渲染的游戲引擎當中&#xff0c;也許是因為許多人發現現在只需要調幾個參數就能實現具有非常精細細節的表面著色了。反正現在網絡上隨…

sql server 2008 身份驗證失敗 18456

雙擊打開后加上 ;-m 然后以管理員方式 打開 SQLSERVER 2008 就可以已window身份登錄 不過還沒有完 右鍵 屬性 》安全性 更改為 sql server 和 window身份驗證模式 沒有sql server登陸賬號的話創建一個 然后把-m去掉就可以用帳號登錄了 轉載于:https://www.cnblogs.com/R…

js 兩個方法

//js in_array方法function in_array(all,one) { for(i0;i<all.length;i) { if(all[i] one) return true; } return false; } //js in_array方法/*** 一維數組去重方法** param arr 需要去重數組* returns {Array} 返回已經去重數組*/function unique(arr) {var ret [];va…

敏捷數據科學pdf_如何將敏捷框架應用于數據科學項目

敏捷數據科學pdfIn this article, well discuss how agile principles and values can be applied to the way you approach data science projects.在本文中&#xff0c;我們將討論如何將敏捷性原則和價值觀應用于您處理數據科學項目的方式。 Project management methodologi…

劍指 Offer 56 - II. 數組中數字出現的次數 II

在一個數組 nums 中除一個數字只出現一次之外&#xff0c;其他數字都出現了三次。請找出那個只出現一次的數字。 示例 1&#xff1a; 輸入&#xff1a;nums [3,4,3,3] 輸出&#xff1a;4 示例 2&#xff1a; 輸入&#xff1a;nums [9,1,7,9,7,9,7] 輸出&#xff1a;1 限制…

Java逆向基礎之AspectJ的獲取成員變量的值

注意&#xff1a;由于JVM優化的原因&#xff0c;方法里面的局部變量是不能通過AspectJ攔截并獲取其中的值的&#xff0c;但是成員變量可以在逆向中&#xff0c;我們經常要跟蹤某些類的成員變量的值&#xff0c;這里以獲取ZKM9中的qs類的成員變量g為例進行說明在StackOverFlow上…

鹽噪聲和胡椒噪聲的區別_為什么加一點鹽對您的密碼很有用(但不包括胡椒粉!)

鹽噪聲和胡椒噪聲的區別A brief note - this article is about the theory of how to crack hashed passwords. Understanding how cybercriminals execute attacks is extremely important for understanding how to secure systems against those types of attacks. 簡要說明…

【Luogu1393】動態逆序對(CDQ分治)

【Luogu1393】動態逆序對&#xff08;CDQ分治&#xff09; 題面 題目描述 對于給定的一段正整數序列&#xff0c;我們定義它的逆序對的個數為序列中ai>aj且i < j的有序對(i,j)的個數。你需要計算出一個序列的逆序對組數及其刪去其中的某個數的逆序對組數。 輸入輸出格式 …