首页 > 其他分享 >区间分组贪心

区间分组贪心

时间:2023-11-06 10:12:39浏览次数:38  
标签:一组 传送门 贡献 分组 区间 贪心

是我见识少了,真没见过这种的……

传送门

如果看成有序排列的\((x,y)\)配对,那么可以写成\(r_x-l_y\)。(因为如果是负数,会在\(y,x\)的时候被枚举到,这样就不用考虑max和绝对值了)。

于是,就是分成恰好长度为\(\frac{n}{2}\)的两组,一组贡献为\(r_i\),一组贡献为\(l_i\),求贡献最大值。

假设全部都是\(r_i\),变成\(-l_i\)的贡献是\(-(r_i+l_i)\),排序然后选择就行了。

真不会写,我是傻逼……

标签:一组,传送门,贡献,分组,区间,贪心
From: https://www.cnblogs.com/zhangchenxin/p/17811906.html

相关文章

  • cf1834E. MEX of LCM(维护右端点计算区间lcm)
    cf1834E首先可以估计一下答案的量级,因为小于答案的质数都要必须要出现,5e6以内的质数大概就是3e5,所以答案不超过5e6。我们维护以i右端点的lcm的值,这些值的数量不会太多,因为每次增长都至少×2,所以是log级别。每次新加的时候记得更新和去重即可。#include<cstdio>#include<algor......
  • 随机化贪心
    随机化什么是随机化算法?随机化做法,就是基于当前算法而言,通过正确算法求解会TLE或者MLE,但是出于骗分的目的,我对可能答案中的一些序列或者值进行查找,在我随机瞎找的这些值中去找正确答案,最后,所得出的答案具有极大可能性为正确答案,甚至于百分之一百。如果题目要求最优解,但难以......
  • 区间DP入门
    石子合并别人讲过太多了,蒟蒻就不说了。Polygon这题跟石子合并类似,只是多输出了个先清除哪条边可以使得值最大。因为我们不确定先删那一条,我们就再复制一遍添到输入的结尾,就变成了$2\timesN-1$。我们思考最大值是由哪些贡献的。最大值与最大值运算。最小值乘上最小值......
  • 贪心算法(C语言)
    一、会议安排问题1.1问题(1)对于每个会议i,起始时间bi和结束时间ei,且bi<ei(2)[bi,ei]与[bj,ej]不相交,则会议i和会议j相容,bi≥ej或bj≥ei(3)目标:在有限的时间内,尽可能多地安排会议1.2分析选择最早结束的会议1.3实现(1)初始化:按结束时间递增排序(2)选中第一......
  • 字节笔试题-区间异或
    题目给两个长度为n的数组a,b,请你计算出有多少个区间[l,r],满足\(a_{l}\oplusa_{l+1}\oplusa_{l+2}\oplus\ldots\oplusa_{r}=b_{l}\oplusb_{l+2}\oplusb_{l+2}\oplus\ldots\oplusb_{r}\)(\(\oplus\)表示按位异或)输入描述第一行输入一个整数n,表示数组长度。第二行输......
  • C# Lambda 分组排序问题(先对数据进行时间倒序排列,然后再按照某字符分组,在每个分组内再
    问题:先对数据进行时间倒序排列,然后再按照某字符分组,在每个分组内再按照某数字或字符正序排列解答:vardata=list.OrderByDescending(i=>i.Date).ToList();vargData=data.GroupBy(g=>g.code).Select(l=>l.OrderBy(i=>i.Step));varinvData=newList<IndexVM>();......
  • 802. 区间和
    假定有一个无限长的数轴,数轴上每个坐标上的数都是 00。现在,我们首先进行 n� 次操作,每次操作将某一位置 x� 上的数加 c�。接下来,进行 m� 次询问,每个询问包含两个整数 l� 和 r�,你需要求出在区间 [l,r][�,�] 之间的所有数的和。输入格式第一行包含两个整数 n� 和 m�。接下来 n�......
  • es java 分组查询
    publicLonggetEventGroupDivceCont(LogRequestreq){StringindexName;if(req.getAppId()==null){indexName=indexNameGenerator.structuredLogPrefixWithoutAppId()+"*";}else{indexName......
  • 贪心算法之找零钱
    defgreedy_change(amount,coins):coins.sort(reverse=True)#将硬币按面额从大到小排序change=[]forcoinincoins:whileamount>=coin:amount-=coinchange.append(coin)#将硬币加入到找零列表中returnch......
  • 贪心法
      ......