LeeCode 1787 DP

題意

傳送門 LeeCode 1787 使所有區間的異或結果為零

題解

任一個元素都至多對 k k k個長度為 k k k的區間產生影響,故難以直接依次處理每一個元素。

觀察到滿足條件的數組中模 k k k意義下索引相等的各個元素相同,故可以依次處理每一個同余類。 d p [ i ] [ j ] dp[i][j] dp[i][j]表示前 i i i個同余類異或結果為 j j j情況下的最小更改元素數。直接枚舉每一種取值,時間復雜度 O ( n 2 20 ) O(n2^{20}) O(n220),難以勝任。設同余類 i i i元素規模為 m m m,則至多改動 m m m個元素,則可以從任一個狀態轉移過來,那么貪心地選擇改動數量最少的狀態即可。對于出現在同余類中的取值,直接暴力枚舉即可。總時間復雜度 O ( n 2 10 ) O(n2^{10}) O(n210)

#include <bits/stdc++.h>
using namespace std;class Solution {public:int minChanges(vector<int>& nums, int k) {vector<map<int, int>> cnt(k);vector<int> num(k);int n = nums.size();for (int i = 0; i < n; ++i) {num[i % k] += 1;cnt[i % k][nums[i]] += 1;}auto _min = [](int& x, int y) {x = min(x, y);};const int lg = 10;const int inf = 1e9;vector<vector<int>> dp(k + 1, vector<int>(1 << lg, inf));dp[0][0] = 0;for (int i = 0; i < k; ++i) {int m = num[i];int p = min_element(dp[i].begin(), dp[i].end()) - dp[i].begin();for (int j = 0; j < 1 << lg; ++j) {for (auto& [x, c] : cnt[i]) {_min(dp[i + 1][j], dp[i][j ^ x] + m - c);}_min(dp[i + 1][j], dp[i][p] + m);}}return dp[k][0];}
};

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

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

相關文章

OpenCV學習(4.1) 改變顏色空間

1.目標 在本教程中&#xff0c;你將學習如何將圖像從一個色彩空間轉換到另一個&#xff0c;像BGR?灰色&#xff0c;BGR?HSV等除此之外&#xff0c;我們還將創建一個應用程序&#xff0c;以提取視頻中的彩色對象你將學習以下功能&#xff1a;cv2.cvtColor&#xff0c;**cv2.i…

更適合工程師和研究僧的FPGA專項培訓課程

各位編程精英er~ 社區打造的FPGA工程師培訓班上線后&#xff0c;有不少同學后臺私信詢問&#xff1a;“能不能出個那種專門針對某個知識點的課程呢&#xff1f;我想針對自己的薄弱點深入學習。” 貼心如我&#xff0c;當然會滿足大家的學習需求啦。本周&#xff0c;社區FPGA專…

數學學習基本理念與方法

公理&#xff1a;不證自明的命題&#xff0c;一定條件下都認同的正確的結論 定理&#xff1a;在公理基礎上由嚴謹的數學邏輯獲得&#xff08;為證明的&#xff0c;叫猜想&#xff09; 推論&#xff1a;由某個定理推導出來&#xff0c;相對定理約束條件更多&#xff0c;重要程度…

面試題:說說你對 JS 中 this 指向的了解

面試題&#xff1a;說說你對 JS 中 this 指向的了解 JS 的代碼執行環境分為嚴格模式和非嚴格模式&#xff0c;可以通過 use strict 打開嚴格模式&#xff0c;此時 JS 在語法檢查上會更加嚴格。要討論 JS 中的 this 指向問題&#xff0c;也要分為嚴格模式和非嚴格模式進行討論。…

VRRP簡介

一、VRRP 定義概念 VRRP “Virtual Router Redundancy Protocol”即虛擬路由器冗余協議。 一種將多個物理路由器組合成一個虛擬路由器的協議。為了提供網關的冗余備份&#xff0c;提高網絡的可靠性。虛擬路由器擁有虛擬 IP 地址和虛擬 MAC 地址。虛擬信息作為終端設備訪問網絡…

Nextjs使用教程

一.手動創建項目 建議看這個中文網站文檔,這個里面的案例配置都是手動的,也可以往下看我這個博客一步步操作 1.在目錄下執行下面命令,初始化package.json文件 npm init -y2.安裝react相關包以及next包 yarn add next react react-dom // 或者 npm install --save next react…

使用Python操作Redis

大家好&#xff0c;在當今的互聯網時代&#xff0c;隨著數據量和用戶量的爆發式增長&#xff0c;對于數據存儲和處理的需求也日益增加。Redis作為一種高性能的鍵值存儲數據庫&#xff0c;以其快速的讀寫速度、豐富的數據結構支持和靈活的應用場景而備受青睞。本文將介紹Redis數…

貓頭虎分享已解決Bug || Error: ‘fetch‘ is not defined

原創作者&#xff1a; 貓頭虎 作者微信號&#xff1a; Libin9iOak 作者公眾號&#xff1a; 貓頭虎技術團隊 更新日期&#xff1a; 2024年6月6日 博主貓頭虎的技術世界 &#x1f31f; 歡迎來到貓頭虎的博客 — 探索技術的無限可能&#xff01; 專欄鏈接&#xff1a; &…

獨立游戲之路 -- 上架TapTap步驟和注意事項

個人開發者游戲上架TapTap上架步驟和注意事項 一、TapTap 介紹二、獨立游戲上架 TapTap 的步驟2.1 創建游戲2.2 提交游戲審核2.3 TapTap 平臺上發布。 三、注意事項3.1 關于備案3.2 遵守 TapTap 的規定3.3 保證游戲質量 四、常見問題4.1 隱私政策問題4.2 先發布還是先優化&…

C語言學習--鏈式結構

結構體的應用&#xff1a; //數據結構與算法 數據結構 ---- 指的是 數據的組織形式 數組 --- 數據結構 數組特點 連續性&#xff0c;有序性&#xff0c;單一性 數據操作&#xff08;訪問&#xff09;時的特點 -------------------…

Ubuntu24.04記錄網易郵箱大師的安裝

郵箱大師下載 官網自行下載&#xff0c;下載后文件名“mail.deb" https://dashi.163.com/ 安裝發現缺少依賴 #mermaid-svg-8wqpqFSBVOPD7NGP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8wqpqFSBVOPD7NGP …

PIVOT函數-動態列

一、需求說明 原始表&#xff1a; select * from pathogen_pro; 將pm_name的值轉成對應的列&#xff0c;效果如下 二、PIVOT函數說明 PIVOT(<聚合函數>([聚合列值]) FOR [行轉列前的列名] IN([行轉列后的列名1],[行轉列后的列名2],[行轉列后的列名3],.......[行轉列后…

Julia編程11:變量作用域 Scope of Variables

There are two main types of scopes in Julia, global* scope* and local* scope*. Julia有全局變量作用域和局部變量作用域&#xff0c;函數或者一些結構體、循環體如for等是否內部是局部環境可以參照下表。 ConstructScope typeAllowed withinmodule, baremoduleglobalglo…

.Net 基于.Net8開發的一個Asp.Net Core Webapi后端框架

1.項目結構 該項目是基于.net8開發的Asp.Net Core WebApi后端服務,集成了Efcore,Autofac,Jwt,AutoMapper,Serilog,Quartz,MiniExcel等組件。該框架簡單易上手&#xff0c;沒有額外的學習成本; 該項目采用了多層結構設計&#xff0c;有利于解耦&#xff0c;包含公共層&#xff0…

Linux入門學習指南

天行健&#xff0c;君子以自強不息&#xff1b;地勢坤&#xff0c;君子以厚德載物。 每個人都有惰性&#xff0c;但不斷學習是好好生活的根本&#xff0c;共勉&#xff01; 文章均為學習整理筆記&#xff0c;分享記錄為主&#xff0c;如有錯誤請指正&#xff0c;共同學習進步。…

MySQL數據庫整體知識點簡述

目錄 第一章&#xff1a;數據庫系統概述 第二章&#xff1a;信息與數據模型 第3章 關系模型與關系規范化理論 第四章——數據庫設計方法 第六-七章——MySQL存儲引擎與數據庫操作管理 第九章——索引 第10章——視圖 第11章——MySQL存儲過程與函數 第12章——MySQL 觸…

【SIPMRCP】freeswitch中的transfer和bridge有什么區別

在FreeSWITCH中&#xff0c;transfer和bridge是兩個用于處理通話的不同概念&#xff0c;它們之間的主要區別體現在功能和用途上。以下是關于這兩個概念的清晰解釋和區別&#xff1a; transfer&#xff08;轉移&#xff09; 功能&#xff1a;transfer主要用于將通話從一個目標…

IIS7整合Tomcat9服務器,并搭建ASP+PHP+JSP完整運行環境

本文以Windows Vista系統為例&#xff0c;詳細講解IIS7整合Tomcat服務器&#xff0c;同時支持ASPPHPJSP三種Web動態網頁技術的方法。 Vista系統自帶的IIS版本為7.0&#xff0c;能安裝的IE瀏覽器的最高版本為IE9。IE9也是Vue2前端框架支持的最低瀏覽器版本。 【準備工作】 去微…

【TB作品】msp430g2553單片機,讀取GY-30光強,串口發送

硬件 //GY-30 //SCL–P1.4 //SDA–P1.5 //VCC–3.3V //GND–GND //ADDR–不接 部分程序 #include <msp430.h> #include "gy30.h"void Send_Byte(char data) {while (!(IFG2 & UCA0TXIFG)); // USCI_A0 TX buffer ready?UCA0TXBUF data…

藍橋杯物聯網競賽_STM32L071_20_用printf將數據顯示在OLED上

需求&#xff1a; 第十五屆國賽確實有點變態&#xff0c;顯示部分大概有6個所以需要大量將sprintf與OLED_ShowString配合使用才能顯示相應格式的數據&#xff0c;所以我在想能不能簡化一下這一部分直接用寫好的printf語句將數據顯示到顯示屏上呢&#xff1f; 代碼&#xff1a…