P5967 [POI 2016] Korale 題解

P5967 [POI 2016] Korale

題目描述

nnn 個帶標號的珠子,第 iii 個珠子的價值為 aia_iai?

現在你可以選擇若干個珠子組成項鏈(也可以一個都不選),項鏈的價值為所有珠子的價值和。

給出所有可能的項鏈排序,先按權值從小到大排序,對于權值相同的,根據所用珠子集合的標號的字典序從小到大排序。

請輸出第 kkk 小的項鏈的價值,以及所用的珠子集合。

輸入格式

第一行包含兩個正整數 n,kn,kn,k
第二行包含 nnn 個正整數,依次表示每個珠子的價值 aia_iai?

輸出格式

第一行輸出第 kkk 小的項鏈的價值。
第二行按標號從小到大依次輸出該項鏈里每個珠子的標號。

輸入輸出樣例 #1

輸入 #1

4 10
3 7 4 3

輸出 #1

10
1 3 4

說明/提示

對于 100%100\%100% 的數據,1≤n≤1061\le n\le 10^61n1061≤k≤min?(2n,106)1\le k\le \min(2^n,10^6)1kmin(2n,106)1≤ai≤1091\le a_i\le 10^91ai?109

思路

類似P2048超級鋼琴~

把兩問分開做。

第一問。先將數從小到大排序。然后維護一個優先隊列,隊列元素為 (w,i)(w,i)(w,i) 表示此時價值為 www ,并且選到了第 iii 個,隊列中按價值排序。每次我們取出一個最小價值,出隊同時判斷答案,然后再加入 (w+ai+1,i+1)(w+a_{i+1},i+1)(w+ai+1?,i+1) 表示選擇 i+1i+1i+1 ,加入(w+ai+1?ai,i+1)(w+a_{i+1}-a_i,i+1)(w+ai+1??ai?,i+1) ,表示反悔這一步的操作。

第二問。可以根據第一問的答案來暴搜。也就是要找答案為 ansansans,小于等于ansansans 的數有 kkk 個的方案。從前往后搜來保證字典序最小。直接 O(n)O(n)O(n) 找可行狀態復雜度爆炸,我們用線段樹記錄最小值。每次線段樹上二分確定位置(每次找字典序最小且符合條件的點)。每次二分是 O(logn)O(\text log n)O(logn) ,至多進行 O(k)O(k)O(k) 次,所以復雜度是O(klogn)O(klogn)O(klogn)

code:


```cpp
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e6+15;
ll n,k;
ll a[N],b[N],ans2[N];	
ll lst=0,cnt=0,nw=0;
struct tree{int l,r;ll w,mn;
}tr[N<<2]; 
struct node{ll w,len;bool operator < (const node &p) const{return w>p.w;}
};
priority_queue<node> q;
ll read(){ll x=0;char c=getchar();while(c<'0'||c>'9'){c=getchar();}while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=getchar();}return x;
}
void build(int p,int l,int r){tr[p].l=l,tr[p].r=r;if(l==r){tr[p].mn=a[l];return ;}int mid=(l+r)>>1;build(p<<1,l,mid);build(p<<1|1,mid+1,r);tr[p].mn=min(tr[p<<1].mn,tr[p<<1|1].mn);
}
int query(int p,int l,int r,int k,ll x){if(k<=l){if(tr[p].mn>x) return 0;if(l==r) return l;}int mid=(l+r)>>1;if(k<=mid){int y=query(p<<1,l,mid,k,x);if(y) return y;}//else{return query(p<<1|1,mid+1,r,k,x);
//	}
}
void dfs(int nwi,ll as){
//	cout<<nw<<" "<<as<<" "<<cnt<<endl;if(as==0){cnt--;if(cnt!=0) return ;for(int i=1;i<=nw;++i){printf("%lld ",ans2[i]);}printf("\n");return ;}if(cnt<0) return ;for(int i=nwi+1;i<=n;++i){i=query(1,1,n,i,as);//i右側第一個<as if(i==0) return ;ans2[++nw]=i;dfs(i,as-a[i]);nw--;}
}
int main(){//freopen("pearl.in","r",stdin);//freopen("pearl.out","w",stdout);scanf("%lld%lld",&n,&k);k--;for(int i=1;i<=n;++i){a[i]=read();b[i]=a[i];}sort(b+1,b+1+n);build(1,1,n);node xx;xx.w=b[1],xx.len=1;q.push(xx);cnt=0;for(int i=1;i<=k;++i){node x=q.top();q.pop();if(x.w==lst) cnt++;else lst=x.w,cnt=1;x.len++;if(x.len>n) continue;x.w+=b[x.len];q.push(x);x.w-=b[x.len-1];q.push(x);}
//	cout<<cnt<<endl;printf("%lld\n",lst);dfs(0,lst);return 0;
} 

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

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

相關文章

SwiftUI 頁面彈窗操作

SwiftUI 頁面彈窗操作指南一、基礎彈窗實現1. Alert 基礎警告框2. ActionSheet 操作菜單3. Sheet 模態視圖4. Popover 浮動視圖二、高級自定義彈窗1. 自定義彈窗組件2. 使用自定義彈窗三、彈窗狀態管理1. 使用環境對象管理彈窗2. 彈窗路由系統四、動畫與過渡效果1. 自定義彈窗動…

OpenCV圖像處理2:邊界填充與平滑濾波實戰

前面學了一些關于opencv圖像處理的內容&#xff0c;現在繼續。一 圖像填充邊界填充&#xff08;Border Padding&#xff09;?&#xff0c;即在圖像四周添加指定寬度的像素區域。其核心函數是cv2.copyMakeBorder()&#xff0c;通過不同的填充方式&#xff08;borderType&#x…

imx6ull-驅動開發篇22——Linux 時間管理和內核定時器

目錄 內核時間管理 系統節拍率 高/低節拍率的優缺點 jiffies 節拍數 時間繞回 時間轉換函數 內核定時器 timer_list 結構體 定時器API函數 init_timer 函數 add_timer 函數 del_timer 函數 del_timer_sync 函數 mod_timer 函數 Linux 內核短延時函數 內核時間管…

路由器數據控制管理層面安全

數據層面&#xff1a;FPM Flexible Packet MatchingFPM是CisCOIOS新一代的ACL根據任意條件&#xff0c;無無狀態的匹配數據包的頭部負載&#xff0c;或者全部分析協議&#xff0c;更易于規則的創建用于替代傳統ACL&#xff0c;對特定惡意流量的基礎架構過濾無狀態ipv4單播不支持…

Vue內置組件全解析:從入門到面試通關

文章目錄Vue內置組件全解析&#xff1a;從入門到面試通關引言&#xff1a;為什么需要內置組件&#xff1f;一、Vue內置組件全景圖二、核心內置組件詳解1. <component> - 動態組件2. <transition> - 過渡動畫3. <keep-alive> - 組件緩存4. <slot> - 內容…

VUE+SPRINGBOOT從0-1打造前后端-前后臺系統-會議記錄

在當今快節奏的工作環境中&#xff0c;會議記錄是每個職場人士都必須要面對的任務。傳統的手動記錄方式不僅效率低下&#xff0c;而且容易遺漏重要信息。隨著Web技術的發展&#xff0c;基于瀏覽器的實時語音轉寫技術為會議記錄提供了全新的解決方案。本文將詳細介紹如何利用Web…

WEB3——水龍頭,如何獲得開發用的測試幣、 Sepolia 測試幣?

注意&#xff1a; 有些水龍頭渠道&#xff0c;要求以太坊幣至少有0.01ETH,設有這個門檻&#xff0c;下面并不是所有渠道都能領取到測試幣&#xff0c;有些可能對領取測試幣有要求&#xff0c;如果想獲得獲取以太坊幣的方法&#xff0c;可以看我其他的文章。 本文整理了多個免費…

C++調試革命:時間旅行調試實戰指南

還在為C的懸垂指針、內存泄漏和并發競態抓狂&#xff1f;讓調試器學會“時光倒流” 凌晨三點&#xff0c;std::thread創建的六個線程中有一個突然吞掉了你的數據&#xff0c;valgrind只告訴你“Invalid read”&#xff0c;而時間旅行調試&#xff08;TTD&#xff09;?? 能讓你…

mysql8.0筆記

1.DDL數據定義語言 DDL是什么——————創建、修改、刪除 數據庫和表結構的命令。 基本語法 針對數據庫的操作 -- 創建數據庫 CREATE DATABASE 數據庫名; -- 比如 CREATE DATABASE myschool; --查看所有數據庫 SHOW DATABASES; --使用某個數據庫 USE myschool; -- 刪除數據庫…

大模型微調【1】之入門

文章目錄說明一 大模型微調技術1.1 微調基礎1.2 量化概念1.3 高效微調方法LoRA&QLoRA1.4 LoRA VS QLoRA1.5 高效微調的應用場景二 主流微調工具2.1 unsloth2.2 LLama-Factory2.3 ms-SWIFT2.4 ColossalAI2.5 底層微調框架推薦2.6 模型性能評估框架EvalScope三 微調所需軟硬件…

深入解析Linux poll()系統調用

&#x1f504; Linux poll() 系統調用詳解一、poll 是干什么的&#xff1f;poll 是 Linux&#xff08;及 POSIX 標準&#xff09;中用于實現 I/O 多路復用&#xff08;I/O Multiplexing&#xff09; 的系統調用&#xff0c;它的核心作用是&#xff1a;讓一個線程能夠同時監視多…

文獻閱讀 | PLoS ONE | SRplot:一個免費的在線平臺,用于數據可視化和圖形

文獻介紹文獻題目&#xff1a; SRplot&#xff1a;一個免費的在線平臺&#xff0c;用于數據可視化和圖形 研究團隊&#xff1a; Yewei Wang&#xff08;中南大學湘雅二醫院&#xff09; 發表時間&#xff1a; 2023-11-09 發表期刊&#xff1a; PLoS ONE 影響因子&#xff1a; 3…

分布式與微服務寶典

分布式理論基礎 1、分布式架構有哪些特點&#xff0c;優勢和缺陷 特點&#xff1a;微服務架構的優點微服務架構的缺陷自由使用不同技術增加故障排除挑戰每一個微服務都側重于單一功能由于遠程調用增加延遲支持單個可部署單元增加了配置與其他操作的工作量允許經常發布軟件難以保…

利用生成式AI與大語言模型(LLM)革新自動化軟件測試 —— 測試工程師必讀深度解析

引言 自動化測試是現代軟件工程的基石&#xff0c;然而&#xff0c;隨著軟件復雜度和迭代速度的飛速提升&#xff0c;傳統自動化測試方法正面臨越來越多的挑戰。 近年來&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;和大語言模型&#xff08;LLM&#xff0…

JS 與 C++ 雙向通信實戰:基于 WebHostViewListener 的消息處理機制

前言在現代瀏覽器和桌面應用開發中&#xff0c;WebView 嵌入已經成為一種非常常見的 UI 技術方案。無論是基于 Chromium 的 CEF&#xff08;Chromium Embedded Framework&#xff09;、Qt WebEngine&#xff0c;還是自研瀏覽器內核&#xff0c;嵌入 WebView 都能帶來極高的靈活…

模板打印技術——Office XLS 打印模板:為政務土地確權定制的紙張替換利器—仙盟創夢IDE

代碼public static int cyberwin_replaceExcelandoutputPrint(string fisrcpathleurl, DataTable dtInfo, string despath){if (File.Exists(despath) true){//刪除目標文件File.Delete(despath);}File.Copy(fisrcpathleurl, despath);string 目標文件 despath;MSEXCEL.Appli…

可直接運行的 Playwright C# 自動化模板

目錄 目錄結構 1. appsettings.json&#xff08;賬號、URL、路徑配置&#xff09; 2. Program.cs&#xff08;啟動入口&#xff09; 3. SchedulerConfig.cs&#xff08;定時調度&#xff09; 4. SocialSecurityTask.cs&#xff08;自動報社保任務&#xff09; 5. QuerySo…

云平臺監控-云原生環境Prometheus企業級監控實戰

目錄 一、基于 Kubernetes 的 Prometheus 監控方案概述 1. 核心組件及功能 2. 監控流程詳解 3. 關鍵監控指標說明 二、Prometheus 與相關組件部署 1. 克隆項目代碼 2. 安裝 Prometheus Operator 3. 安裝 Prometheus Stack 4. 查看容器運行狀態 三、ServiceMonitor 配…

GPT-5 有點不太順

GPT-5 有點不太順 OpenAI 的新模型 GPT-5 盼了很久,結果一上線就問題不少。 發布會剛過,CEO 山姆?奧特曼就說,要給部分用戶恢復 GPT-4o 這些老模型的使用權限,還承認 GPT-5 上線 “比預想的坎坷”。 簡單題都做錯了 不少用戶發現,GPT-5 連一些簡單問題都答不對,比之前…

《卷積神經網絡(CNN):解鎖視覺與多模態任務的深度學習核心》

1.概述卷積神經網絡&#xff08;CNN&#xff09;是深度學習在計算機視覺領域的重要突破&#xff0c;專為處理網格狀數據&#xff08;如圖像&#xff09;設計&#xff0c;后也擴展到自然語言處理等領域。它解決了全連接網絡處理大圖像時計算代價高、特征保留差的問題&#xff0c…