首页 > 其他分享 >Spark _Exam_ 20240711

Spark _Exam_ 20240711

时间:2024-07-14 16:20:16浏览次数:7  
标签:20240711 Exam 线段 贡献 Statement 区间 Spark sum 维护

Spark Exam 20240711

Conclusion

比较可惜,做前面AB的时候状态不错,但是后面就不行了,C题直接想错了一个点,然后又没有继续想,D题确实不知道一些技巧,但是其实已经凑齐了正解的全部拼图,可以拿到 60-70 pts.

score240|rnk3|est260|ideal360|idealrnk2

A. flandre

Statement

定义一个序列的权值:

\[S(a)=\sum_{i}{a_i}+\sum_{i<j} \left\{\begin{aligned} &k && a_i<a_j\\ &-k && a_i>a_j\\ &0 && a_i=a_j \end{aligned}\right. \]

给定一个可重集,求将它的一个子集排序之后能够得到的权值的最大值。

Solution

可以证明,当选择集合 \(S\) 之后,一定按照升序排列,则对于大小为 \(|S|\) 的方案来说,一定要选择最大的那些,故降序排序 \(\mathcal O(n\log n)\) 解决。

B. meirin

Statement

对于序列 \(a,b\) ,维护操作:

  1. 单点修改 \(b\)

  2. 求 \(\sum_l\sum_r(\sum_{i\in[l,r]}a_i)\times(\sum_{j\in[l,r]}b_j)\)

Solution

拆掉下面的式子,尝试把式子变成点对贡献的问题(这样就多一个分讨),然后发现线段树做不了emm。这里的关键在于本题是全局查询,不需要、也很难维护区间,所以考虑维护一个前缀和后缀和,轻松愉悦 \(\mathcal O(n)\) 切掉。


考试时的精神状态:

我有没有搞错,这个直接线段树是不是就解决了?
哦不是
拆一下式子看看
\sum_{i=[l,r]} (a_i\sum_{j=[l,r]} b_j)
每一个包含数对 (i,j) 的区间都会贡献一次 a_i*b_j
这个数量是(若i<=j) i*(n-j+1) 个区间
假设下面先算 i<=j 的情况 
\sum_i\sum_j a_i*b_j*i*(n-j+1)
\sum_i (a_i*i)\sum_j b_j*(n-j+1)
	|as1			|bs1
后面这个式子内的值,和i没有关系处理为 SUM
则优化至 O(N) i>j 则同理 
----------------------------------------
以上当然是不带修改的做法 
一旦修改,则 SUM 会发生变化

(b_j+k)*(n-j+1)
+= k*(n-j+1)
=k*(n+1)-k*j

什么,怎么感觉不用线段树?
现在补全一下 i>j
\sum_i\sum_j a_i*b_j*j*(n-i+1)
\sum_i a_i*(n-i+1)\sum b_j*j
	|as2			|bs2
还真的不用线段树???
什么玩意 我算错了吗 
不对,后面那个部分是有范围的
那就用线段树
把左边区间的 \sum_i(a_i*i) 和右边的 \sum_j b_j(n-j+1)
×起来贡献给答案即可
然后把左边区间的 \sum b_j*j 和右边的 \sum_i a_i*(n-i+1) 也这样
然后单独算 i==j \sum_i a_i*b_i*i*(n-i+1)
上面这些能够很快维护 SUM 的值,所以才可以打的上标记
O(n\log n) 
答案怎么维护?这个区间当前肯定已经考察了全部数对 (i,j)
对于 j,对左边的所有i多贡献k(n+1)-k*j
对于右边的多贡献 k*j 对总体区间多贡献
(j-l+1)(k(n+1)-k*j)+(r-j)k*j
jk(n+1)-kj^2-lk(n+1)+lkj+k(n+1)-kj+rkj-kj^2
这样,因为是全局查询,我们不应该维护这种利于区间查询的信息
而是对于要被修改的 j,总共多贡献:
	|SP
(\sum_{i<=j}a_i*i)*(k*(n+1)-k*j)+
(k*j)*(\sum_{i>j}a_i*(n-i+1))
			|SA
k(SP*(n+1)+(SA-SP)*j)
这样就又不用线段树了(雾 

C. sakuya

Statement

有点复杂跳过。

Solution

标签:20240711,Exam,线段,贡献,Statement,区间,Spark,sum,维护
From: https://www.cnblogs.com/haozexu/p/18301691

相关文章

  • 2024 年,Hadoop 已经被 Apache Spark 全面取代了吗?
    Hadoop是一个开源的分布式计算平台,能够处理大规模数据集,并且具备高可靠性和可扩展性。Hadoop生态系统庞大,包含了多个组件,如HDFS(HadoopDistributedFileSystem,Hadoop分布式文件系统)、YARN(YetAnotherResourceNegotiator,另一种资源协调者)、Hive、HBase等。这些组件共同构成了......
  • Spark _Exam_ 20240713
    SparkExam20240713Conclusion还可以,没有挂分(反向挂分什么鬼)。数据简直太平洋,T1放掉log,T330变80,T410%的特殊case变成30%的特殊casedp还是很不行,其他方面的思维还可以。A.不相邻集合(a)Statement称可重集合\(S\),若满足\(\forallx\inS,x-1\notinS,x+1\notinS\)......
  • Spark _Exam_ 20240712
    SparkExam20240712Conclusion没有挂分,很好。220/rnk3(outof8)|期望220|理想310其实很多时候过了不代表你就是最优的。A.于是我栽种玫瑰(rose)Statement若对于无向图\(G(V,E)\),其中\(\forallx\in[1,n],ax+b\len\),那么\((x,ax+b)\inE\)。求该图最大独立集大小......
  • Spark Exam 20240710黄洛天
    SparkExam20240710黄洛天0.整体总结时间安排:0-1h,+200pts,1h-4h,+0pts(expected+25pts)A,B较简单。C,D较难。排名4。Acceptable,完全不失误可以拿rnk1,所以还是挺好。D是大数据结构,不太想打(事实上做二维前缀和可以简单地拿到10pts)A.花菖蒲考虑构造完全二叉树,然后多余的1度......
  • Spark
    SparkP6082图是树状的没有必要在向父亲走之后再回到其儿子如果遍历一个节点的n个子树,会消耗1+n次次数(加一次进来)令1节点进入限制是inf故对于一个节点,若它限制进入k次,那么最多遍历他的k-1个子树设遍历x的子树并且回到x的最高收益\(f_x\)那么......
  • Spark24June
    CommentonProblems2024March(Spark.md)本部分是从古老文档Spark.md里摘录的,其余的部分过于像流水账,就不贴了原属于三月的部分下午考题P2573[SCOI2012]滑雪注意到题目是求一个特殊有向图的最小生成树。考虑Prim与Kruskal算法的精髓,实际上是考察了所有可能扩大......
  • spark-submit提交任务时执行流程(简单版)
    yarncluster模式提交spark任务(1)执行脚本提交任务,实际是启动一个SparkSubmit的JVM进程。(2)SparkSubmit类中的main方法反射调用YarnClusterApplication的main方法。(3)YarnClusterApplication创建Yarn客户端,然后向yarn服务器发送执行指令:bin/javaApplicationMaster。(4)Yarn(Resour......
  • 01_spark入门
    SparkSpark作为分布式计算框架,基于MapReduce框架开发,但是也有以下区别:Spark基于Scala语言开发,MR基于Java语言开发;Scala是函数式编程语言,对于函数间相互调用效率更高;而Java是面向对象语言,函数间调用必须依赖于对象,效率低。MapReduce核心是一次性计算,不适合迭代计......
  • spark中的floor函数
    在Spark中,floor函数是一种数学函数,用于返回不大于给定数值的最大整数。具体作用如下:1.数值操作:floor函数会将每个元素向下取整到最接近的整数。例如,对于浮点数或双精度数值,它会返回不大于该数值的最大整数。    importorg.apache.spark.sql.functions._  val......
  • Spark SQL中的正则表达式应用
    正则表达式是一种强大的文本处理工具,在SparkSQL中也得到了广泛支持。本文将介绍SparkSQL中使用正则表达式的主要方法和常见场景。目录1.正则表达式函数1.1regexp_extract1.2regexp_replace1.3regexp_like2.在WHERE子句中使用正则表达式3.在GROUPBY中使用正......