0.杂谈

lyh 出题必毒瘤……
发现不大会,爬了。
讲评发现确实是傻逼诈骗题,200+ 一车一车的,接着爬。

1.简易题解

A

一个数列,要求支持单点修改和查询一个区间 \(k\) 维前缀和的最后一个数。
直接求显然爆炸,考虑单独计算每个点的贡献。它等于 \(\dbinom{r-i+k-1}{k-1}a_i\),是一个关于 \(r\)\(k-1\) 次多项式。现在我们需要求一个区间的贡献,可以用数据结构维护多项式之和。

B

题面见 CF781E。
可以将问题转化为一张图:起点向释放位置的 \(w\) 个点连,每个隔板的两端点看做两个点,在隔板上方且能被接住的点连两个端点,最后将最下面的点向终点连,这样求出起点到终点的路径条数即可。
如何求“在隔板上方且能被接住的点”呢?我们可以在每条竖直的线上用栈维护这些最低的点(它们显然有单调性),然后借助线段树维护最小高度。

C

平面上有两个移动的点 \(A,B\),其中 \(A\) 想要向 \(B\) 发送一条信息。两个点会同时出发,各自沿着一个折线不停地移动。\(A\) 会在移动的途中发送一条信息,这条信息可以视作一个点 \(C\),它会沿一条射线匀速运动,当 \(B\)\(C\) 重合时,\(B\) 即可收到该信息。
\(A,B,C\) 的移动速度都是 \(1\) 单位长度每秒,\(A\) 最晚在它到达终点时发出信息,\(B\) 最晚在它到达终点时收到信息。令 \(t_A\) 代表发送信息的时间,\(t_B\) 代表接收信息的时间,那么你需要最小化 \(t_B-t_A\) 的值。特别地,如果无法满足条件,你需要输出“impossible”(不含引号)。
如果存在 \(t\) 使得 \(dis(pos_A(t),pos_B(t+r))=r\),那么存在一种方案。显然这个 \(r\) 是单调的,我们可以二分它。记 \(pos_C(t)=pos_A(t)-pos_B(t+r)\),那么 \(pos_C\) 也是一条折线,求出它与原点的最小距离就可以判断了。

2.集训队作业选讲

1

题面见 CF521D。
如果我们确定了要进行的操作,那么一定是按照 \(1-2-3\) 的顺序执行的。
但是现在各种操作混在一起,很麻烦。我们发现 \(3\) 操作非常容易维护,所以考虑往它身上靠。
易知加法操作和赋值操作(看做加法)都能化为乘上一个分数的形式,这样就可以排序了。

2

题面见 CF611H。
我们把位数相同的节点归为一类,发现我们总可以在每一类中选一个代表构成一棵树,然后其余的边都连到代表,这些边会消耗一个非代表,于是可以枚举树的形态,将边和非代表匹配即可。

3

题面见 CF528C。
又是一道傻逼题。
最终图中每个点的度数和边的总数都必须是偶数,所以先补完奇度点,然后再补完边。

posted @ 2021-05-09 20:06  ajthreac  阅读(316)  评论(0编辑  收藏  举报