藍橋杯備考---》貪心算法之矩陣消除游戲

我們第一次想到的貪心策略一定是找出和最大的行或者列來刪除,每次都更新行和列

比如如圖這種情況,這種情況就不如直接刪除兩行的多,所以本貪心策略有誤

so我們可以枚舉選的行的情況,然后再貪心的選擇列和最大的列來做

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m,k;
typedef long long ll;
const int N = 20;int sum;int col[N];
int a[N][N];int calc(int x)
{int ret = 0;while(x){ret++;x -= x & -x; }return ret;
}bool cmp(int x,int y)
{return x>y;
}
int ret;int main()
{cin >> n >> m >> k;for(int i = 0;i<n;i++){for(int j = 0;j<m;j++){cin >> a[i][j];}}for(int st = 0;st<(1<<n);st++){memset(col,0,sizeof(col));sum = 0;if(calc(st)>k) continue;for(int i = 0;i<n;i++){for(int j = 0;j<m;j++){if((st>>i)&1) sum+=a[i][j];else col[j]+=a[i][j];}}sort(col,col+m,cmp);int tmp = k-calc(st);for(int i = 0;i<tmp;i++){sum+=col[i];}ret = max(ret,sum);}cout << ret; return 0;
}

這樣寫是有bug的,我們選列的時候有可能會越界

因為我們的k最高是n*m,假如不選行,全選列,列是不夠選的啊,我們應該對col的遍歷范圍做點限制,不能超過m

正確代碼√

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m,k;
typedef long long ll;
const int N = 20;
int a[N][N];
int sum;
int col[N];int calc(int x)
{int ret = 0;while(x){ret++;x -= x & -x; }return ret;
}bool cmp(int x,int y)
{return x>y;
}
int ret;
int main()
{cin >> n >> m >> k;for(int i = 0;i<n;i++){for(int j = 0;j<m;j++){cin >> a[i][j];}}for(int st = 0;st<(1<<n);st++){memset(col,0,sizeof(col));sum = 0;if(calc(st)>k) continue;for(int i = 0;i<n;i++){for(int j = 0;j<m;j++){if((st>>i)&1) sum+=a[i][j];else col[j]+=a[i][j];}}sort(col,col+m,cmp);int tmp = k-calc(st);for(int i = 0;i<min(tmp,m);i++){sum+=col[i];}ret = max(ret,sum);}cout << ret; return 0;
}

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

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

相關文章

LeetCode hot 100—二叉搜索樹中第K小的元素

題目 給定一個二叉搜索樹的根節點 root &#xff0c;和一個整數 k &#xff0c;請你設計一個算法查找其中第 k 小的元素&#xff08;從 1 開始計數&#xff09;。 示例 示例 1&#xff1a; 輸入&#xff1a;root [3,1,4,null,2], k 1 輸出&#xff1a;1示例 2&#xff1a; …

【Java SE】Arrays類

參考筆記&#xff1a; Java中Arrays類(操作數組的工具)_java arrays-CSDN博客 Java——Arrays 類詳解_java arrays類-CSDN博客 目錄 1.Arrays類簡介 2.Arrays.toString 2.1 使用示例 2.2 源碼 3. Arrays.copyOf 3.1 使用示例 3.2 源碼 4.Arrays.sort 4.1 默認排序使…

git命令簡陋版本

git push git pull 臨時倉庫暫存區 ##############創建提交################ git init #創建git地址 git config --global user.name "***YQ1007" git config --global user.email "***gmail.com" git remote…

6. 王道_網絡協議

1 網絡協議和網絡模型 2 TCP/IP協議族概覽 2.1 四層模型的各層實體 2.2 協議數據單元的轉換 2.3 常見協議以及分層 2.4 ifconfig 2.5 本地環回設備 3 以太網 3.1 以太網和交換機 3.2 以太網幀 MAC地址大小 48位 6字節 IP地址 32位 4字節 port 16位 2字節 3.3 ARP協議 4 IP協…

minecraft.service 文件配置

minecraft.service 文件配置 # /etc/systemd/system/minecraft.service [Unit] DescriptionMinecraft Fabric Server Afternetwork.target Wantsnetwork-online.target[Service] Usermcfabricuser Groupmcfabricuser WorkingDirectory/minecraft/1.21.1-fabric-server ExecStar…

python leetcode簡單練習(2)

20 有效括號 方法思路 要判斷一個僅由括號組成的字符串是否有效&#xff0c;可以使用棧這一數據結構。核心思路是遍歷字符串中的每個字符&#xff0c;遇到左括號時壓入棧中&#xff0c;遇到右括號時檢查棧頂的左括號是否匹配。若匹配則彈出棧頂元素&#xff0c;否則返回false。…

AI 數字人短視頻數字人口播源碼:短視頻內容生產的新引擎?

在當下信息爆炸的時代&#xff0c;短視頻已成為主流的信息傳播與娛樂方式之一。在如此龐大的市場需求下&#xff0c;如何高效、創新地生產短視頻內容成為了行業關注的焦點。AI 數字人短視頻數字人口播源碼應運而生&#xff0c;為短視頻內容生產帶來了全新的變革。? 一、行業背…

AI對傳統IT行業的變革

傳統 IT 行業長期以來面臨著諸多挑戰。系統類型繁雜、復雜度高&#xff0c;不少環節依賴人工操作&#xff0c;智能化水平偏低&#xff0c;極大地制約了業務運營效率。此外&#xff0c;傳統 IT 企業背負沉重的歷史包袱&#xff0c;重構系統不僅成本高昂&#xff0c;由于現有系統…

mapbox基礎,使用geojson加載cluster聚合圖層

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言1.1 ??mapboxgl.Map 地圖對象1.2 ??mapboxgl.Map style屬性1.3 ??circle點圖層樣式二、??使用geojson加…

Git回退文件到指定提交

你可以使用 git checkout 命令將某個文件回退到指定提交的版本。以下是具體步驟&#xff1a; 1. 找到目標提交的哈希值 git log --oneline通過 git log 查看提交歷史&#xff0c;找到你要回退到的目標提交的哈希值&#xff08;例如 abc123d&#xff09;。 2. 回退文件到指定提…

如何屏蔽mac電腦更新提醒,禁止系統更新

最煩mac的系統更新提醒了&#xff0c;過幾天就是更新彈窗提醒&#xff0c;現在可以直接禁掉了&#xff0c;眼不見心不亂&#xff0c;不然一升級&#xff0c;開發環境全都不能用了&#xff0c;那才是最可怕的&#xff0c;屏蔽的方法也很簡單&#xff0c;就是屏蔽mac系統更新的請…

mac m1/m2/m3 pyaudio的安裝

google了很多方法&#xff0c;也嘗試了 issue68的方法&#xff0c; 但是均失敗了&#xff0c;但是問deepseek竟然成功了&#xff0c;下面是deepseek r1給出的方法。在M3 pro芯片上可以成功運行. 安裝homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent…

hackmyvm-JO2024

arp-scan -l nmap -sS -v 192.168.222.202 gobuster dir -u http://192.168.222.202 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php -b 301,401,403,404 訪問/preferences.php 看一下cookie 解密 TzoxNToiVXNlclByZWZlcmVuY2VzIjoyOntzOjg6Imxhbmd1…

從零開始學習SQL

1.1 MySQL概述 1. 數據管理技術的發展過程 數據庫技術是應數據管理任務的需要而產生的 a. 什么是數據管理 ** 對數據進行收集、分類、組織、編碼、存儲、檢索和維護一系列活動的總和 **b. 數據管理技術的發展過程 人工管理階段&#xff08;20世紀50年代中之前&#xff09;…

輸電線路在線監測通信規約,即I1協議

文章目錄 概要整體架構流程數據幀格式技術細節 概要 輸電線路在線監測系統 transmission lines online monitoring system 監測輸電線路設備本體、氣象環境、通道狀況等信息&#xff0c;定性或定量分析輸電線路運行狀況的應用系 統。一般包括主站系統、監測裝置以及主站系統與…

【AI】Orin NX+ubuntu22.04上移植YoloV11,并使用DeepStream測試成功

【AI】郭老二博文之:AI學習目錄匯總 1、燒寫系統 新到的開發板,已經燒寫好Ubuntu系統,版本為22.04。 如果沒有升級到Ubuntu22.04,可以在電腦Ubuntu系統中使用SDKManager來燒寫Ubuntu系統,網絡情況好的話,也可以直接將CUDA、cuDNN、TensorRT、Deepstream等也安裝上。 2…

C++之輸入與輸出

文章目錄 C 輸入輸出 (I/O) 詳解基本 I/O 組件&#xff08;input / output&#xff09;基本輸出 (cout)基本輸入 (cin)格式化輸出文件 I/O字符串流常見 I/O 方法比較錯誤處理其他保留小數 C 輸入輸出 (I/O) 詳解 C 使用標準庫中的 iostream 庫來處理輸入輸出操作。主要包括以下…

流動的夢境:GPT-4o 的自回歸圖像生成深度解析

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

eBay多賬號安全運營技術體系:從環境隔離到智能風控的工程化實踐

一、多賬號運營風險模型解析 &#xff08;技術化重構關聯檢測機制&#xff09; 環境指紋維度&#xff1a; 瀏覽器指紋參數&#xff1a;Canvas/WebGL渲染特征&#xff08;差異度要求≥98%&#xff09; 設備指紋參數&#xff1a;GPU型號/聲卡特征&#xff08;識別準確率92%&…

Vue 3 模板引用(Template Refs)詳解與實戰示例

Vue 3 模板引用&#xff08;Template Refs&#xff09;詳解與實戰示例 引言 在 Vue 開發中&#xff0c;通常推薦使用 響應式數據 (ref 和 reactive) 進行數據綁定&#xff0c;而不是直接操作 DOM。但是&#xff0c;在某些情況下&#xff0c;我們確實需要訪問某個組件或 DOM 元…