首页 > 其他分享 >Spark _Exam_ 20240713

Spark _Exam_ 20240713

时间:2024-07-13 17:29:51浏览次数:15  
标签:10 le Exam Algorithm 线段 20240713 mathcal Spark log

Spark Exam 20240713

Conclusion

还可以,没有挂分(反向挂分什么鬼)。

数据简直太平洋,T1放掉log,T3 30变80,T4 10%的特殊case变成30%的特殊case

dp 还是很不行,其他方面的思维还可以。

A. 不相邻集合 (a)

Statement

称可重集合 \(S\) ,若满足 \(\forall x\in S,x-1\notin S,x+1\notin S\) ,称 \(S\) 满足 \(P\) 性质。给定序列 \(a\) ,对于 \(i\in[1,n]\) ,求最大的满足 \(P\) 性质的 \(|S|\subseteq \{a_i|i\in [1,i]\}\) 。

\(1\le n\le 3\times 10^5,1\le a_i\le 5\times 10^5\)

Solution

Algorithm 1

注意到,若将数排序,那么当前最小的能选的数一定必选。这为我们带来一个 \(\mathcal O(n^2)\) 的方法。

Algorithm 2

使用线段树维护包不包括端点的答案,发现可以上传标记,\(\mathcal O(n\log n)\) 切掉。

Algorithm 3

注意到,上面我们的做法中,没有考虑到两个前后缀之间只加了一个数这个事实,发现一段连续段的贡献是长度除二上取整,而添加一个数,连续段更改是 \(\mathcal O(1)\) 个的 ,则考虑 std::set 维护连续段,\(\mathcal O(n\log n)\) 切掉。

这是作者的做法(虽然没有 Algorithm 4 好写)

Algorithm 4

值域不大,可以直接开一个数组维护属于的段编号,Algorithm 3 中的维护能够在 \(\mathcal O(1)\) 之内完成。同理,使用并查集可以在 \(\mathcal O(\alpha(n))\) 的时间内完成,总共时间复杂度 \(\mathcal O(n)\) 切掉。

B. 线段树 (b)

Statement

对于如下代码生成的线段树:

void build(int i, int l, int r) {
    L[i] = l; R[i] = r;
    if (l == r) return;
    int mid = (l+r)/2;
    build(i*2, l, mid); build(i*2+1, mid+1, r);
}

\(T\) 次询问,求 \(\sum_{x\le L[i]\le R[i]\le y} i\pmod {10^9+7}\)

\(T\le 10^4,x,y\le 10^{18}\)

Solution

注意到:询问区间可以在线段树上拆成 \(\mathcal O(\log n)\) 个点,又发现,一棵线段树的形态只与区间长度有关系,考虑到线段树的标号和可以表示为 \(aS+b\) 其中 \(S\) 是根节点编号,则可以递推计算这个关系式,此时能够通过 \(40\%+20\%\) 的数据。

考虑不要推那么多,只推二的次幂,然后不是整次幂的就记忆化搜索,就切掉了。

C. 魔法师 (c)

Statement

维护可重集 \(S,T\) ,支持如下操作 \(Q\) 次:1. 向其中一个集合加入二元组 \((a,b),a,b\in \mathbb N\) 2. 删除一个二元组 \((a,b)\) 。每次操作之后,求出 \(\min_{(a,b)\in S,(x,y)\in T}\max\{a+x,b+y\}\)

Solution

真是太可惜了,已经找出所有需要的了,维护方法却没想到,这方法明明是我之前独立想出来过的。

Algorithm 1

暴力做,这是 \(\mathcal O(n^3)\) 的,期望获得 \(10\%\) 的分数。

数据太水,实际上获得了 \(80\%\)

Algorithm 2

\(\max\) 记号很不好处理,考虑分类讨论。对于 \(a+x\le b+y\) ,移项得 \(a-b\le y-x\) ,考虑将两个集合分别排序,然后可以使用双指针处理询问,复杂度是 \(\mathcal O(n^2)\) 的,期望得分 \(30\%\)

这就是作者的做法,可是得了 80 emm

Algorithm 3

我们走在正确的道路上!这种有偏序关系的询问我们不由得想到分治算法,但是其关键是通过部分排序进行双侧贡献,我们还要支持修改,用线段树的左右区间不是也可以限制偏序关系吗!这样我们就避免贡献不必要的节点,\(\mathcal O(Q\log n)\) 切掉。

本题做法其实与前天 meirin 那个题目很像,不过那个题目线段树无法更新答案呢。但是这个用线段树限制偏序关系的思路是值得借鉴的!

D. 园艺 (d)

Statement

标签:10,le,Exam,Algorithm,线段,20240713,mathcal,Spark,log
From: https://www.cnblogs.com/haozexu/p/18300397

相关文章

  • 上网记录20240713
     模块化医学图像处理可视化软件 https://www.mevislab.de/https://github.com/MeVisLabMeVisLabHelpResourceshttps://mevislabdownloads.mevis.de/docs/current/MeVisLab/Resources/Documentation/Publish/index.html  https://www.kitware.com/OpenInventorThe......
  • 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中使用正......
  • Exam20240629 赛后结
    Exam20240629赛后结T1想法几乎是对的,结果两个不能直接乘起来就是如果你不太冷静的话就容易做出错误的判断,我考虑了这个问题,居然认为直接乘起来是可以的emmT2不太熟悉容斥,想到前缀和之后扔了结果它这个时候就已经变成slime和npc了这个时候就只需要钦定一段是大于k的其......