題目 3293: 藍橋杯2024年第十五屆決賽真題-數位翻轉

題目 3293: 藍橋杯2024年第十五屆決賽真題-數位翻轉
時間限制: 2s 內存限制: 192MB 提交: 1046 解決: 318
題目描述
小明創造了一個函數 f(x) 用來翻轉 x 的二進制的數位(無前導 0)。比如f(11) = 13,因為 11 = (1011)2,將其左右翻轉后,變為 13 = (1101)2;再比如f(3) = 3,f(0) = 0,f(2) = f(4) = f(8) = 1 等等。

小明隨機出了一個長度為 n 的整數數組 {a1, a2, ..., an},他想知道,在這個數組中選擇最多 m 個不相交的區間,將這些區間內的數進行二進制數位翻轉(將ai 變為 f(ai))后,整個數組的和最大是多少?

輸入格式
輸入共 2 行。

第一行為兩個正整數 n, m。

第二行為 n 個由空格分開的整數 a1, a2, ..., an。

輸出格式
輸出共 1 行,一個整數表示答案。

樣例輸入復制
5 3
11 12 13 14 15
樣例輸出復制
67
提示
【樣例說明 1】只翻轉 a1,和為 13 + 12 + 13 + 14 + 15 = 67。

再比如:

【樣例輸入 2】6 223 8 11 19 16 35

【樣例輸出 2】134

【樣例說明 2】翻轉區間 [a3, a4] 和 [a6],和為 23 + 8 + 13 + 25 + 16 + 49 = 134。

【評測用例規模與約定】

對于 20% 的評測用例,保證 n, m ≤ 20。

對于 100% 的評測用例,保證 n, m ≤ 1000,0 ≤ ai ≤ 109。

1.分析

? ? ? ? 偶數反轉一定變小,判斷奇數即可,先算出所有變大的差值,再找到差值最大的m個區間。

2.代碼

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int MAX = 1e5+10;
typedef long long LL;
LL n, m;
LL a[MAX],b[MAX],sum;
LL reserse(LL x) {      //反轉函數vector<LL> v;while (x) {LL t = x & -x;v.push_back(t);x -= t;}LL t = v[v.size() - 1];LL re = 0;for (int i = 0; i < v.size(); i++) {re += t / v[i];}return re;
}
int main() {cin >> n >> m;for (int i = 0; i < n; i++) {   //輸入cin >> a[i];sum += a[i];}for (int i = 0; i < n; i++) {if (a[i] % 2 != 0) {       //判斷計算差值LL t = reserse(a[i]);if (t > a[i]) {b[i] = t - a[i];}}}LL t = 0;vector<LL> v;for (int i = 0; i < n; i++) {   //計算區間if (b[i]) {t += b[i];}else if (t != 0) {v.push_back(t);t = 0;}}if (t != 0) v.push_back(t);sort(v.begin(), v.end());for (int i = v.size()-1; i >=0; i--) {       //找到前m個區間if (v.size()-1-i<m) {sum += v[i];}}cout << sum << endl;return 0;
}

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

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

相關文章

word為跨頁表格新加表頭和表名

問題&#xff1a; 當表格過長需要跨頁時&#xff08;如下圖所示&#xff09;&#xff0c;某些格式要求需要轉頁接排加續表。 方法一&#xff1a; 1、選中表格&#xff0c;在“表布局”區域點開“自動調整”&#xff0c;選擇“固定列寬”&#xff08;防止后續拆分表格后表格變…

Ubuntu上進行VS Code的配置

1. 安裝VS code sudo snap install code --classic 2. 安裝GCC sudo apt install build-essential 3. 安裝VS Code中文包 打開 VS Code 點擊左側活動欄中的擴展圖標(或按Ctrl+Shift+X) 在搜索框中輸入:Chinese (Simplified) 選擇由 Microsoft 提供的 中文(簡體)語言包…

vr中風--數據處理模型搭建與訓練2

位置http://localhost:8888/notebooks/Untitled1-Copy1.ipynb # -*- coding: utf-8 -*- """ MUSED-I康復評估系統&#xff08;增強版&#xff09; 包含&#xff1a;多通道sEMG數據增強、混合模型架構、標準化處理 """ import numpy as np impor…

【LLM vs Agent】從語言模型到智能體,人工智能邁出的關鍵一步

目錄 一、什么是 LLM&#xff1f;語言的天才&#xff0c;思維的起點 ? 特點小結&#xff1a; 二、什么是 Agent&#xff1f;智能的執行者&#xff0c;自主的決策者 ? 特點小結&#xff1a; 三、LLM 與 Agent 的關系&#xff1a;是工具&#xff0c;更是大腦 四、案例實戰…

安裝DockerDocker-Compose

Docker 1、換掉關鍵文件 vim /etc/yum.repos.d/CentOS-Base.repo ▽ [base] nameCentOS-$releasever - Base - Mirrors Aliyun baseurlhttp://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck1 enabled1 gpgkeyhttp://mirrors.aliyun.com/centos/RPM-GPG-KEY-C…

Perl One-liner 數據處理——基礎語法篇【匠心】

Perl&#xff08;Practical Extraction and Report Language&#xff09;是一種功能強大且靈活的腳本語言&#xff0c;因其強大的文本處理能力和簡潔的語法而廣受開發者和系統管理員的喜愛。特別是在命令行環境下&#xff0c;Perl 的 one-liner&#xff08;單行腳本&#xff09…

Go語言defer關鍵字:延遲執行的精妙設計

深度解析Go語言defer關鍵字&#xff1a;延遲執行的精妙設計 引言 在Go語言中&#xff0c;defer語句是一種獨特而強大的控制流機制&#xff0c;它通過??延遲執行??的方式解決資源管理、錯誤處理和異常恢復等關鍵問題。理解defer的工作原理是掌握Go并發編程和錯誤處理的關鍵…

C#項目07-二維數組的隨機創建

實現需求 創建二維數組&#xff0c;數組的列和寬為隨機&#xff0c;數組內的數也是隨機 知識點 1、Random類 Public Random rd new Random(); int Num_Int rd.Next(1, 100);2、數組上下限。 //定義數組 int[] G_Array new int[1,2,3,4];//一維數組 int[,] G_Array_T …

.NET WinForm圖像識別二維碼/條形碼并讀取其中內容

需求:圖像識別出一張圖片中的二維碼或者條形碼&#xff0c;并讀取其中內容。 一、安裝庫(特別注意&#xff0c;網上很多都沒說清楚) 如果是基于.net framework&#xff0c;則安裝ZXing.Net(建議0.14.0版本左右&#xff0c;具體看實際&#xff0c;版本太高&#xff0c;部分接口…

Guava限頻器RateLimiter的使用示例

文章目錄 1. 背景說明2. API與方法3. 示例代碼3.1 基礎工具方法3.2 測試任務類3.3 測試和統計方法3.4 測試兩種模式的限頻器3.5 測試緩沖時間與等待耗時 4. 完整的測試代碼5. 簡單小結 1. 背景說明 高并發應用場景有3大利器: 緩存、限流、熔斷。 也有說4利器的: 緩存、限流、…

(面試)獲取View寬高的幾種方式

Android 中獲取 View 寬高的幾種方式&#xff0c;以及它們的適用場景和注意事項&#xff1a; 1. View.getWidth() 和 View.getHeight() 原理: 直接從 View 對象中獲取已經計算好的寬度和高度。 優點: 簡單直接。 缺點: 在 onCreate()、onStart() 等生命周期方法中&#xff0…

PostgreSQL pgrowlocks 擴展

PostgreSQL pgrowlocks 擴展 pgrowlocks 是 PostgreSQL 的一個系統擴展&#xff0c;用于顯示表中行級鎖定信息。這個擴展特別適合診斷鎖爭用問題和性能調優。 一、擴展安裝與啟用 1. 安裝擴展 -- 使用超級用戶安裝 CREATE EXTENSION pgrowlocks;2. 驗證安裝 -- 查看擴展是…

JavaSE知識總結 ~個人筆記以及不斷思考~持續更新

目錄 字符串常量池 如果是創建對象還會嗎&#xff1f; Integer也是在字串常量池中復用&#xff1f; 字符串拼接 為什么String是不可變的&#xff1f; String的不可變性是怎么做的&#xff1f; 外部代碼不能創建對象&#xff1f; 構造方法不是私有的嗎&#xff1f; 怎么…

使用HTTPS進行傳輸加密

文章目錄 說明示例&#xff08;公網上的公開web&#xff09;安裝SSL證書Certbot 的 Webroot 模式 和 Standalone 模式的區別**Webroot 模式****Standalone 模式** 技術對比表Node.js 場景下的最佳實踐推薦方案&#xff1a;**Webroot 模式**Standalone 模式應急使用&#xff1a;…

驅動開發(2)|魯班貓rk3568簡單GPIO波形操控

上篇文章寫了如何下載內核源碼、編譯源碼的詳細步驟&#xff0c;以及一個簡單的官方demo編譯&#xff0c;今天分享一下如何根據板子的引腳寫自己控制GPIO進行高低電平反轉。 想要控制GPIO之前要學會看自己的引腳分布圖&#xff0c;我用的是魯班貓RK3568&#xff0c;引腳分布圖如…

ArcGIS Pro 3.4 二次開發 - 布局

環境:ArcGIS Pro SDK 3.4 + .NET 8 文章目錄 布局1 布局工程項1.1 引用布局工程項及其關聯的布局1.2 在新視圖中打開布局工程項1.3 激活已打開的布局視圖1.4 引用活動布局視圖1.5 將 pagx 導入工程1.6 移除布局工程項1.7 創建并打開一個新的基本布局1.8 使用修改后的CIM創建新…

OpenCV 圖像像素的算術操作

一、知識點 1、operator (1)、MatExpr operator (const Mat & a, const Mat & b); a、a和b的行數、列數、通道數得相同。 b、a和b的每個像素的每個通道值分別相加。 (2)、MatExpr operator (const Mat & a, const Scalar & s); a、若a…

音視頻中的復用器

&#x1f3ac; 什么是復用器&#xff08;Muxer&#xff09;&#xff1f; 復用器&#xff08;muxer&#xff09;是負責把音頻、視頻、字幕等多個媒體流打包&#xff08;封裝&#xff09;成一個單一的文件格式的組件。 &#x1f4a1; 舉個形象的例子&#xff1a; 假設你有兩樣東…

數據庫安全性

一、計算機安全性概論 &#xff08;一&#xff09;核心概念 數據庫安全性&#xff1a;保護數據庫免受非法使用導致的數據泄露、更改或破壞&#xff0c;是衡量數據庫系統的關鍵指標之一&#xff0c;與計算機系統安全性相互關聯。計算機系統安全性&#xff1a;通過各類安全保護…

【Linux網絡編程】網絡層IP協議

目錄 IP協議的協議頭格式 網段劃分 特殊的IP地址 IP地址的數量限制 私有IP地址和公網IP地址 路由 IP協議的協議頭格式 4位版本號 &#xff1a;指定IP協議的版本&#xff0c;對于IPv4&#xff0c;版本號就是4。 4位首部長度&#xff1a;表名IP協議報頭的長度&#xff0c;單…