首页 > 其他分享 >CF1817E Half-sum

CF1817E Half-sum

时间:2023-07-07 23:14:03浏览次数:56  
标签:frac Submission sum Half Delta 集合 CF1817E

greedy

把数分成两个集合 \(A,B\),且 \(A<B\)。令每个集合的数的个数分别是 \(a,b\)。令 \(A_1\dots A_a,B_1\dots B_b\) 分别有序。

定理 \(1\)

\(A\) 集合合并的顺序一定是从大往小的,\(B\) 集合是从小往大的。

应该很好猜到,但是证明需要一点推导。

大概可以局部到 \(x,y,z,w\) 四个数的情况。

几种情况分别是 \(\frac{x+y}{8}+\frac{z}{4}+\frac{w}{2}\),\(\frac{x+y+z+w}{4}\),\(\dots\)。比较一下发现第一种情况就是最优的。

定理 \(2\) \(\max A<\min B\)。

由于集合内部贡献的计算是固定,如果存在 \(A_i>B_j\),显然交换会更优(\(A\) 会变小 \(B\) 会变大)。

于是我们得到一个平方做法:枚举 \(i\) 前面是 \(A\) 后面是 \(B\),直接模拟计算贡献。Submission #212568859 - Codeforces

不要害怕推导,考虑 \(i\to i+1\) 会发生什么?\(\Delta=\frac{a_{i+1}-a_{i}}{2^{n-i}}-\frac{a_i-a_{i-1}}{2^{i-1}}\)。

记 \(b_i=a_{i}-a_{i-1}\)。那么就有

\[\Delta_{i\to j}=\frac{b_j}{2^{n-j+1}}-\frac{b_i}{2^{i-1}}+\sum_{k=i+1}^{j-1}(\frac{1}{2^{n-k+1}}-\frac{1}{2^{k-1}})b_k \]

继续分析这个式子,当 \(i<j\le \frac{n}{2}\) 时,由于 \(2^{n-j+1}\) 较大且 \(2^{i-1}\) 较小。所以当 \(i\le \frac{n}{2}-30\),且 \(b_i\ne 0\) 时就一定不会继续右移。右边同理。所以我们只需要 check 左右各 \(30\) 个数或者之后的第一个 \(b_i\ne 0\) 的位置即可。

Submission #212584916 - Codeforces

标签:frac,Submission,sum,Half,Delta,集合,CF1817E
From: https://www.cnblogs.com/zcr-blog/p/17536034.html

相关文章

  • AE插件中文汉化丨创意半调圆点填充效果 Halftone V1.1.2 Win
    Halftone是一个AfterEffects中文汉化插件,可帮助你使用点阵效果填充gradients和形状。 主要特点•使用不同尺寸的点来生成渐变效果。•自定义点的形状、颜色、大小、随机性、旋转等参数。•易于使用的界面,简单设置即可。•支持AECC2015及更高版本。•此版本v1.1......
  • 920 F. SUM and REPLACE
    目录F.SUMandREPLACE题意:思路:F.SUMandREPLACE题目传送门题意:给你n个数,按照顺序排列,再进行m次操作。每次操作要么是问你区间[l,r]的和,要么是让你将区间[l,r]的所有数\(a_i=D(a_i),D(i)=i的因子数\),如:\(D(2)=2(因子:1,2),D(6)=4(因子:1,2,3,6)\)思路:做法一:线段树维护区间......
  • 题解:【AT icpc2015summer day2-G】 Escape
    题目链接目前AT的最优解。树的话就是根叶链的最大点权和路径,DP随便搞。考虑扩展到图上,反复删除掉所有度数为\(1\)的节点,显然剩下的东西是可以全部取完的,因为它的形态类似于菊花套环,且末端必定为环。将这部分缩起来再跑上面的DP就好了。事实上两部分可以同时进行,一个bfs......
  • SummerResearch_Log_20230703
    WorkingContent:1.这几天找到了提取attention层的代码,并且可以实现可视化:https://github.com/luo3300612/Visualizer效果图大概是这样:用这段代码调用函数,attention_maps[3][0,4,:,:]指的是第3层attention层的第4个注意力头的注意力分数。visualize_grid_to_grid_with_cl......
  • AtCoder Regular Contest 163 D Sum of SCC
    洛谷传送门AtCoder传送门怎么连这种相对传统的计数也不会……考虑换种方式描述强连通分量个数。考虑竞赛图缩点后存在一条极长的链,因此转化为把缩完点后的链劈成左右两个集合,使得左边集合不为空的方案数。于是我们现在只要统计点集\(A,B\)数量,满足\(A\ne\varnothing,A......
  • 空和0造成的Sumifs的错误结果
    问题:某个条件区域为空,直接使用Sumifs的结果错误。解决:H2单元格连接空文本=SUMIFS(C:C,A:A,G2,B:B,H2&"")绝大多数情况下,空单元格被引用后返回的结果是0,但作为Sumif这类函数的条件区域参数,默认为非数值,即空文本,这时就可以将相应的条件转成文本型数字。这一转换不会影响条......
  • 18、【SparkStreaming】object not serializable (class: org.apache.kafka.clients.c
    背景:当SparkStream连接kafka,消费数据时,报错:objectnotserializable(class:org.apache.kafka.clients.consumer.ConsumerRecord,value:ConsumerRecord分析:消费者的消费记录序列化出现了问题,需要正确的进行序列化。措施:在设置sparkconf的时候,指定序列化方式就可以解......
  • Codeforces 1458F - Range Diameter Sum
    先考虑直径的一些求法:最普遍的想法肯定是从点集中任意一个点开始DFS找到距其最远的点,再一遍DFS找到距离你找到的那个点最远的点。但是放在这个题肯定是不太行的。因此考虑一种更常用的求法:合并。更直观地说:我们定义树上一个圆\((x,r)\)表示距离\(x\)点\(\ler\)的所有点......
  • C++ summary
    结构体和变量C++不提倡使用外部声明的变量,但是提倡使用外部声明的结构体。在外部声明符号常量更合理。符号常量编译后在代码区,不可更改,不可寻址是指令的一部分#define标识符常量enum{};consttypeA=B;结构体初始化={}且等号不必须不允许缩窄转换(宽字节赋......
  • SummerResearch_Log_20230627
    WorkingContent:1.今天开始看VisionTransformer(ViT):看之前需要一些基础:(1)RNN(RecurrentNN,循环神经网络):一段连续的信息,前后信息之间是有关系地,必须将不同时刻的信息放在一起理解。如果是普通的神经网络,每个输入之间是相互独立的,如果是RNN,则可以接收上一个输入传递的信息。......