首页 > 其他分享 >[ABC376E] Max × Sum 题解

[ABC376E] Max × Sum 题解

时间:2024-10-20 08:48:18浏览次数:8  
标签:seq 题解 Sum cin 子集 ABC376E Max

[ABC376E] Max × Sum 题解

原题链接

洛谷链接

一道简单的推性质题,首先明确一个性质,子集是非连续的,所以在计算时并不用连续区间求。

拿过题来,首先想的是枚举 \(B\) 的最小子集,但其复杂度为 \(O(C_N^K)\) 复杂度过高,不足以通过本题。于是转变思路,枚举 \(A\) 之中的最大值。若 \(a_i\) 是一个区间最大值,当且仅当长度为 \(k\) 的子集其为最大。但这样还不是很好求。

由于题目未要求输出子集元素,则元素顺序对求解过程无影响,于是建立结构体数组 \(s\) 存储 \(A,B\) ,则有 \(s_i=\{a_i,b_i\}\) ,以 \(a_i\) 的大小进行结构体排序,从大到小遍历数组,建立大根堆维护 \(b_i\) 的,若堆的大小超出 \(k\) 则弹出堆顶,和减去。对于每一个堆的大小等于 \(k\) 的时刻,统计答案。(详见代码)

注:

  1. 记得开 long long
  2. ans 的初值不能太小,至少 \(2e17\)
#include <bits/stdc++.h>
#define seq(q, w, e) for (int q = w; q <= e; q++)
#define ll long long              //记得开long long
using namespace std;
const ll maxn = 2e5+10,mod=2e17;  //初值至少2e17
ll t,ans;
ll n,k,tot;                       //tot为b的和
struct node{
	ll a,b;
}s[maxn];
bool cmp(node a,node b){         //排序函数
	return a.a<b.a;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>t;
	while(t--){
		tot=0,ans=mod;
		priority_queue<ll,vector<ll>,less<ll> >pq; //优先队列存储b的值
		cin>>n>>k;
		seq(i,1,n) cin>>s[i].a;
		seq(i,1,n) cin>>s[i].b;
		sort(s+1,s+n+1,cmp);
		seq(i,1,n){
			if(pq.size()<k-1){                    //若堆的大小不足k-1
				tot+=s[i].b;
				pq.push(s[i].b);
			}
			else{
				tot+=s[i].b;                      //压入,正好k个元素
				pq.push(s[i].b);
				ans=min(ans,s[i].a*tot);          //与原先ans取min
				tot-=pq.top();                    //不确定是否最优,于是继续统计
				pq.pop();
			}
		}
		cout<<ans<<"\n";
	}
    return 0;
}

标签:seq,题解,Sum,cin,子集,ABC376E,Max
From: https://www.cnblogs.com/adsd45666/p/18486915

相关文章

  • Maxwell学习笔记-入门了解
    目前,学习Maxwell已经两个月了,简单分享一下我的学习经验吧。(首次写博客,页面有些过于简洁,以后再学习怎么美化网页页面)1.软件安装首先是软件安装,Ansys的官网有免费的学生版,如果你还是在校生的话,千万不要错过这个机会。Ansys学生版|免费学生软件下载 在这个页面里往下滑,看重了......
  • 线性可分支持向量机的原理推导【补充知识部分】9-10最大化函数max α,β L(x,α,β)关
    本文是将文章《线性可分支持向量机的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。在主文章中,有一个部分是关于补充拉格朗日对偶性的相关知识,此公式即为这部分里的内容。公式9-10是基于公式9-9的进一步引申,它通过引入拉格朗日乘子,将约束优化问......
  • 时延求和(Delay-and-Sum, DAS)波束形成器
    目录1.问题描述2.DAS波束形成3.DAS波束响应与波束图1.问题描述假设存在一个声源以及由N个阵元组成的麦克风阵列,且声源到各个阵元的传播信道只会引入时延与衰减,即......
  • 整数去重-题解
    整数去重-题解题目描述给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。输入格式输入包含两行:第一行包含一个正整数n(1<=n<=20000),表示第二行序列中数字的个数;第二行包含n个整数,整数......
  • P4050 麻将 题解
    不愧是ZJOI。题意:有\(n\)种麻将牌,每种四张。定义"胡牌"为小鸡胡或普通七小对。给定初始\(13\)张牌,将剩下\(4n-13\)张牌随机排列,问期望摸多少张牌能胡(假设采用最优决策)。\(n\le100\)。先考虑怎么判定是否胡牌。\(cnt[i]\)表示前\(i\)种牌能凑出多少个对子,\(f[i][j]......
  • P10532 [XJTUPC2024] 筛法 题解
    ~~打表可知答案为$n^2$~~一种几何证明,方法来自于讲评。考虑把$n^2$个整点放到坐标系中,满足$(x,y)(x\len,y\len)$。现在从原点向每个满足$(x,y)(x\perpy)$的点引出一条射线,显然每个点都会唯一的被一条射线覆盖到,因为$(\dfrac{x}{\gcd(x,y)},\dfrac{y}{\g......
  • P3571 [POI2014] SUP-Supercomputer 题解
    P3571「POI2014」SUP-Supercomputer题解一道“较”水的黑题(可一开始苦思冥想还是不会)。本蒟蒻的第一篇黑题题解,求赞。题意简化给定一棵$n$个节点、根节点为$1$的有根树。$q$次询问中每次给定一个$k$,输出需要最少用几次操作次数删除完整棵树。每次操作可以选择删......
  • P6533 [COCI2015-2016#1] RELATIVNOST 题解
    考虑当$q=0$时怎么做。注意到性质$c\le20$,因此不妨正难则反,将**至少有$c$个人购买彩色画**的方案数转化为总方案数减去**不足$c$人购买彩色画的方案数**。这个是一个类似凑数的dp,不妨考虑背包。我们有$f_{i,j}$表示前$i$人中**恰好**$j$人购买彩色画的方......
  • [CF1616H] - Keep XOR Low 的题解
    一道比较神奇的题目,状态显得比较扯淡,但是就是能过!先建立出trie树,设\(dp_u\)表示以\(u\)为根的子树内的答案。但我们发现,若\(x\)的当前位为\(1\),那么问题就没法根据他的左右子树求解了,怎么办呢。考虑一个很扯淡的状态,设\(dp_{u,v}\)表示考虑了\(u,v\)为根的子树,他......
  • 牛客练习赛130-A题题解
    牛客练习赛130-A题题解题目描述如下:给定两个整数x,y,jackle希望把x变成y。他每次可以进行如下两种操作之一:选择任意一个整数z,令x=x&z。选择任意一个整数z,令x=x|z。请问最少操作几次可以把x变成y。输入描述:本题有多组测试数据。第一行输入1个正整数T(1≤T......