首页 > 其他分享 >选择子序列再逆序

选择子序列再逆序

时间:2025-01-23 09:55:30浏览次数:1  
标签:pre cnt const int ll 选择 序列 pre2 逆序

https://codeforces.com/problemset/problem/2063/B

#include<bits/stdc++.h>
using namespace std;

#define endl '\n'
using ll = long long;
using pii = pair<int, int>;
const double PI = acos(-1);
const int N =1e5+10;
const int mod = 1e9 + 7;
int a[N];
bool cmp(int x,int y){
	return x>y;
}
void solve(){
	int n,l,r;
	cin>>n>>l>>r;
	vector<int> v,v1,v2;
	ll sum=0;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(i<l){
			v1.push_back(a[i]);
		}
		else if(i>r){
			v2.push_back(a[i]);
		}
		else {
			v.push_back(a[i]);
			sum+=a[i];
		}
	}
	if(l==1&&r==n) {
		cout<<sum<<endl;
		return;
	}
	sort(v.begin(),v.end(),cmp);
	sort(v1.begin(),v1.end());
	sort(v2.begin(),v2.end());
	ll ans=1e18;
	vector<ll> pre1(l+5),pre(r-l+5),pre2(n-r+5);

	int cnt=1;
	for(auto t:v1){
		pre1[cnt]=pre1[cnt-1]+t;
		cnt++;
	}
	cnt=1;
	for(auto t:v){
		pre[cnt]=pre[cnt-1]+t;
		cnt++;
	}
	cnt=1;
	for(auto t:v2){
		pre2[cnt]=pre2[cnt-1]+t;
		cnt++;
	}
	ll nowsum=sum;
	for(int i=1;i<=min((r-l+1),l-1);i++){
		if(pre1[i]<pre[i]){
			nowsum=sum;
			nowsum-=pre[i];
			nowsum+=pre1[i];
			ans=min(ans,nowsum);
		}
	
	}
	for(int i=1;i<=min((r-l+1),(n-r));i++){
		if(pre2[i]<pre[i]){
			
		nowsum=sum;
		nowsum-=pre[i];
		nowsum+=pre2[i];
		ans=min(ans,nowsum);
		}
	}
	if(ans==1e18){
		ans=sum;
	}
	cout<<ans<<endl;
	
}
int main() {
	
	ios::sync_with_stdio(false);
	cin.tie(nullptr), cout.tie(nullptr);
	
	int T = 1;
	cin>>T;
	while (T--) {
		solve();
	}
	
	return 0;
}

[l,r]中选择一些,ir中再选一些,等价于只在一边1,l-1选比原来少的个数与[l,r]中的一些元素以相同的个数组成最终的子序列,因为个数相同,枚举一下个数就行,[l,r]从大到小排序,1,l-1从小到大排序,分两种情况讨论

标签:pre,cnt,const,int,ll,选择,序列,pre2,逆序
From: https://www.cnblogs.com/laileou/p/18687142

相关文章

  • 【信息系统项目管理师-选择真题】2019下半年综合知识答案和详解
    更多内容请见:备考系统架构设计师-专栏介绍和目录文章目录【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】......
  • hutool工具JSONUtil序列化对象和反序列化到Map的时候,null的值因为JSONNull无法转换而
    importcn.hutool.json.JSONNull;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.databind.JsonSerializer;importcom.fasterxml.jackson.databind.SerializerProvider;importorg.springframework.boot.jackson.JsonComponent;import......
  • 时间序列平稳性的双重假设检验:KPSS与ADF方法比较研究
    在进行时间序列分析之前,确定序列的平稳性是一个关键步骤。平稳性指的是时间序列的统计特性(如均值和方差)在时间维度上保持不变。本文将详细介绍如何运用 KPSS检验和 Dickey-Fuller检验来验证序列的平稳性。这两种检验方法基于不同的统计假设:KPSS检验的原假设是数据非平稳,而Di......
  • 【翻译】使用Jackson反序列化接口
    作者:AndrewTarry原文链接:DeserializinganinterfacewithJackson原文发表时间:2020-05-2715:10 +0100原文更新时间:2023-01-3111:22+0200在将Json和Java对象互相转换的库中,我最喜欢的是Jackson。它可以自动把对象映射到POJO。但反序列化接口需要多写些代码。Jackson能从POJO......
  • Mermaid介绍(一种基于文本的图表和可视化工具,可以通过代码生成流程图、序列图、甘特图
    文章目录Mermaid的特点:1.**基于文本**2.**易于集成**3.**图表类型丰富**示例(记得代码类型加Mermaid标识)1.**流程图示例**2.**序列图示例**3.**甘特图示例**4.**类图示例**优点:-**简洁**-**灵活性高**-**易于更新和维护**缺点:-**功能相对较基础**-**布局......
  • 桂云网络:桂花流程引擎(Osmanthus)与Camunda、Zeebe、Flowable、Activiti流程引擎选择
    在当今企业数字化转型的过程中,流程引擎作为实现业务自动化、提升工作效率和增强决策能力的重要技术工具,已成为企业流程管理不可或缺的一部分。市场上有多种流程引擎解决方案,每种方案具有不同的功能特点、技术架构和使用场景。在选择合适的流程引擎时,企业需要根据业务需求、......
  • 15.if选择结构
    if单选择结构语法if(布尔表达式){//如果布尔表达式为true将执行的语句}if双选择结构语法if(布尔表达式){//如果布尔表达式为true将执行的语句}else{//如果布尔表达式的值为false将执行的语句}if多选择结构语法if(布尔表达式1){//如果布尔表达式1为true......
  • 云电脑对比传统电脑优势,为什么选择国产ToDesk
            不知道大家是否都有被“云音乐、云协作、云端存储、云计算、云电脑...”这样的词汇或应用影响过,论到“云”这相关的内容可算得上是近几年的流行事物。就比如网易云音乐、有道云词典、百度云盘,这几个娱乐、学习、工作类的应用基本多数人的手机或电脑中都有装,足......
  • 【题解】Luogu P4340 [SHOI2016] 随机序列
    简单手摸后发现,答案就是这么一个式子:\[(3^{n-1}-3^{n-2})a_1+(3^{n-2}-3^{n-3})a_1a_2+\dots+(3^1-3^0)a_1a_2\dotsa_{n-1}+a_1a_2\dotsa_n\]啊当然证明也是好证的,对于\(a_1\)这一项,它后面放+或-都会对系数加一,而放*不会影响系数,因此系数就是总数的三分之二。其它前缀......
  • 时间选择器(免费获取)
    成果展示:完整代码: <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>动态阻尼下拉刷新<......