首页 > 其他分享 >CF1919 C. Grouping Increases

CF1919 C. Grouping Increases

时间:2024-02-01 12:34:32浏览次数:36  
标签:长为 Increases 答案 序列 gets CF1919 Grouping

给定一个长为 \(n\) 的序列 \(a\),你需要将该序列恰好分成两个子序列 \(s,t\)。定义一个长为 \(m\) 的序列 \(b\) 的代价为 \(\displaystyle p(b)=\sum_{i=1}^{m-1}[b_i<b_{i+1}]\),求 \(p(s)+p(t)\) 的最小值。每个测试点 \(t\) 组测试用例。

思路贪心。

可以发现答案的贡献只与每相邻两个数有关,因此维护 \(x, y\) 表示当前两个子序列的结尾数字。为了更一般性,令 \(x \ge y\)。

此时,对于一个新元素 \(a_i\),我们要考虑将其放入哪个子序列后,而且我们希望修改后 \(x, y\) 的值尽量变大,因为这会对后续造成更有利的影响。

此时共有三种情况:

  • \(a_i > x\):这意味着无论放在哪个子序列都会导致答案多一,但是显然将 \(y \gets a_i\) 更优。因为这会使 \(x, y\) 增大的尽量多。
  • \(a_i > y\):如果 \(y \gets a_i\),那么答案会多一,显然不优。因此 \(x \gets a_i\)。
  • \(a_i \le y\):显然此时放在哪个子序列中答案都不会加一。但是这样修改后一定会让它们变小,所以我们选择 \(y \gets a_i\),即让损失较小。

根据上述规则模拟即可。代码

标签:长为,Increases,答案,序列,gets,CF1919,Grouping
From: https://www.cnblogs.com/2huk/p/18000885

相关文章

  • CF1919F2 Wine Factory (Hard Version)
    题意有\(n\)个桶,每个桶里有\(a_i\)单位水。每次查询按\(1,2...,n\)的顺序进行。当操作到桶\(i\)时,先将当前桶里的水取\(b_i\)加入答案。并将当前里的水全部流向\(i+1\),最多只能流\(c_i\)单位。每次修改\(a_p,b_p,c_p\)查询答案。Sol不难想到建模网络流......
  • DPU Grouping
    题意给定\(n\)个物品,任意分组,\(i\)与\(j\)物品在同一组贡献为\(a_{i,j}\)。求最大贡献。\(n\le16\)。Sol考虑状压\(f_i\)表示\(i\)集合的最大贡献。注意到枚举最后一个选的数不好转移,考虑用一个集合转移到另一个集合。子集枚举即可。复杂度\(3^n\)。Code#i......
  • 【论文阅读笔记】【OCR-文本检测】 Few Could Be Better Than All: Feature Sampling
    CVPR2022读论文思考的问题论文试图解决什么问题?一些基于DETR的方法在ICDAR15,MLT17等文字尺度变化范围较大的数据集上文本检测的效果不佳DETR运用的高层特征图难以捕捉小文字的特征,且会引入很多无关的背景噪声,增加了检测的困难程度即使使用DETR的改进模型......
  • Java 通过collectors.groupingBy根据某个字段统计
    要使用Collectors.groupingBy根据某个字段统计,你可以通过提供一个函数来指定分组的条件。假设你有一个包含Person对象的列表,每个对象都有age字段表示年龄,你想要根据年龄分组,并统计每个年龄组的人数。以下是一个使用Collectors.groupingBy的示例代码:importjava.util.Arrays;imp......
  • Java 使用`Collectors.groupingBy`计算百分比
    要使用Collectors.groupingBy计算百分比,你需要先对数据进行分组,然后计算每个组内元素的百分比。假设你有一个包含整数的列表,你想要按照它们的奇偶性进行分组,并计算每个组内元素的百分比。以下是一个使用Collectors.groupingBy和自定义收集器的示例代码:importjava.util.Arrays;......
  • MapReduce自定义GroupingComparator
    需求:有如下订单明细数据0000001 01 222.80000002 06 722.40000001 05 25.80000003 01 222.80000003 01 33.80000002 03 522.80000002 04 122.4第一列是订单编号,第二列是商品id,第三列是商品金额,列与列之间用制表符分隔。现在需要求出每一个订单中最贵的商品。思路:将订单id和商......
  • hive grouping sets
    HiveGroupingSets在大数据处理中,数据聚合是一项非常重要的任务。在Hadoop生态系统中,ApacheHive是一种常用的数据仓库基础架构,它提供了一个类SQL的界面,用于查询和分析大规模数据集。Hive的一个强大功能是"GroupingSets",它允许我们按多个列进行分组,并同时计算多个聚合。什么是G......
  • Stream - Collectors.groupingBy实现分组后,且每个分组也进行排序
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Stream-实现分组后,且每个分组也进行排序前言一、groupingBy高级用法二、先分组,再排序总结 前言之前记录过:stream的三个常用方式(toMap,groupingBy,findFirst)。这里继续记录下groupingBy的几个高......
  • Java8 Stream --groupingBy 分组讲解
    本文主要讲解:Java8Stream之Collectors.groupingBy()分组示例Collectors.groupingBy()分组之常见用法功能代码:/***使用java8streamgroupingBy操作,按城市分组list*/publicvoidgroupingByCity(){Map<String,List<Employee>>map=employe......
  • oracle 高级分组 GROUPING SETS
    用SCOTT/TIGER登录。groupingsets就是对参数中的每个参数做group,也就是有几个参数做几次group。SQL:SELECTJOB,DEPTNO,SUM(SAL)FROMEMPGROUPBYGROUPINGSETS(JOB,DEPTNO);结果:......