首页 > 其他分享 >CF2063B Subsequence Update

CF2063B Subsequence Update

时间:2025-01-23 14:13:19浏览次数:1  
标签:q1 q2 CF2063B int Update Subsequence 区间

Subsequence Update

题目翻译:

给定一个序列。在给定一个区间 \([l,r]\),你可以任意选择几个数,使所选的所有数左右颠倒。求如何颠倒才能使区间内的所有数之和最小。

思路:

若要使整个区间内所有数和最少,那一定就使尽量小的数翻转到区间内。我们发现我们只需要在区间左边或右边选择几个数,在在区间内选等量的数,翻转之后,所选的数就进去了。因此我们可以根据该性质。就可以发现,我们只需要在区间左边或右边选择较小的数与区间内较大的数替换即可。

实现:

可以建两个小根堆,分别储存区间加区间左边和区间加区间右边。然后只需要在两个小根堆中选择区间长度个数,在取最小值即可。这样所选择的就是最少答案。

完整代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int a[N];
priority_queue<int,vector<int>,greater<int>>q1,q2;
signed main(){
    int t;
    scanf("%lld",&t);
    while(t--){
        int n,l,r;
        scanf("%lld%lld%lld",&n,&l,&r);
        int len=r-l+1;
        while(!q1.empty())q1.pop();
        while(!q2.empty())q2.pop();
        for(int i=1;i<=n;i++){
            scanf("%lld",&a[i]);
            if(i<=r){
                q1.push(a[i]);
            }
            if(i>=l){
                q2.push(a[i]);
            }
        }
        int sum1=0,sum2=0;
        for(int i=1;i<=len;i++){
            sum1+=q1.top();
            sum2+=q2.top();
            q1.pop();
            q2.pop();
        }
        cout<<min(sum1,sum2)<<endl;
    }
}

标签:q1,q2,CF2063B,int,Update,Subsequence,区间
From: https://www.cnblogs.com/XichenOC/p/18687668

相关文章

  • 【动态规划】最长上升子序列(Longest Increasing Subsequence)问题以及输出具体方案
    最长上升子序列两道模板题(一样的)洛谷B3637最长上升子序列AcWing895.最长上升子序列题目描述这是一个简单的动规板子题。给出一个由\(n(n\le5000)\)个不超过\(10^6\)的正整数组成的序列。请输出这个序列的最长上升子序列的长度。最长上升子序列是指,从原序列中按顺......
  • ADS 2024update2 下载安装教程
    软件简介先进设计系统AdvancedDesignsystem(ADS)AgilentTechnologies是领先的电子设计自动化软件,适用于射频、微波和信号完整性应用。ADS是获得商业成功的创新技术(例如X参数*和3D电磁仿真器)的代表,这些技术已被无线通信与网络以及航空航天与国防领域中的领先厂商广泛采用......
  • update 修改单表的多个字段,造成数据混乱
    1、问题描述在某个环境里面,需要修改单个表的多个字段,造成了数据混乱,跟理想修改的数据不一致。1.1模拟问题现象1234567891011121314151617181920212223242526272829303132#注意:创建的表没有主键,且t1表是innodb引擎 root@loc......
  • Sample Teamcenter SOA Java program : CreateOrUpdateBOMStructure
    SampleTeamcenterSOAJavaprogram:CreateOrUpdateBOMStructure  Solution/* This example was tested with the SOAJava HelloTeamcenter example provided in the soa_client.zip file.It assumes you have the HelloTeamcen......
  • SQL-update多条Select出来的数据.090205
    好多朋友喜欢用游标解决此问题,但是执行速度狂慢!其实解决起来很简单了:先来个简单的:把FLowER的Am_employee表的email,dept_id,ext_no多条数据按emp_no对应update到EmpBaseInfo表中:update EmpBaseInfo set email=b.Mail_account,dept_id=b.dept_code,ext_no=b.ext_nofro......
  • AT_abc248_h [ABC248Ex] Beautiful Subsequences 题解
    题目传送门前置知识树状数组|序列分治解法考虑序列分治,设因\(\max\)和\(\min\)形成的分节点先后为\(k_{1},k_{2}\)。对于\(j\in(mid,k_{1}]\),等价于统计满足\(\max\limits_{h=i}^{mid}\{a_{h}\}-\min\limits_{h=i}^{mid}\{a_{h}\}\lej-i+k\)的\(j\)的......
  • docker update 参数详解
    https://www.cnblogs.com/zwh0910/p/16386029.htmldockerupdate--restart=alwayscontainer一、dockerupdatedockerupdate:更新一个或多个容器的配置。语法dockerupdate[OPTIONS]CONTAINER[CONTAINER...]OPTIONS说明名称描述--blkio-weight阻塞IO(......
  • mysql如果updatedate is null就把createdate设置到updatedate
      mysql>select*frome_task3instance_struct_8whereupdatedateisnull;+---------------------+----------------+--------------------+------------------+----------+--------------+----------+-----------+--------------------+----------+-------+--------......
  • wx.stopLocationUpdate
    wx.stopLocationUpdate(Objectobject)基础库2.8.0开始支持,低版本需做兼容处理。以Promise风格调用:支持小程序插件:支持,需要小程序基础库版本不低于2.8.0微信鸿蒙OS版:支持功能描述关闭监听实时位置变化,前后台都停止消息接收参数Objectobject属性类型默......
  • wx.startLocationUpdateBackground
    wx.startLocationUpdateBackground(Objectobject)基础库2.8.0开始支持,低版本需做兼容处理。以Promise风格调用:支持用户授权:需要scope.userLocationBackground小程序插件:不支持微信鸿蒙OS版:支持相关文档:地理位置接口新增与相关流程调整功能描述开启小程......