闲话
这场做的时候完全心不在焉,导致做了三题就跑路看电影去了(大雾)……晚上做东西意志力真的很差
第二天补了好久才补完,F 题虽然难度不大但是卡了很久,看来这种类似 [HAOI2012] 高速公路 的题目还是做得不熟练
D 题反应出思维能力还是很欠缺
题解
(单击题号查看完整题解)
题意描述 |
题解 |
---|---|
A | 每个学生的分数最少为 (0),所以我们只要把除了第 (1) 名学生之外的所有学生的分数全部给第 (1) 个学生就能使他的分数最大。 |
B | 实质上就是整个字符串左移若干位,多出来的部分挪到右边,并根据奇偶翻转 |
C 给定两个序列 (a,b),保证每个序列中所有数字的 GCD 为 (1),设 (a*b=c),给定质数 (p),求 (t) 使得 (c_t) 不能被 (p) 整除 | 要使 (c_i mod p
eq 0),则 (a_0b_i, a_1b_{i-1}, dots, a_ib_0) 中至少有一项满足 (a_xb_y
eq 0 mod p),这要求 (a_x,b_y
eq 0 mod p),于是我们只需要按下标从小到大找到第一个 (a_i
eq 0, b_j
eq 0 mod p),那么 (i+j) 就是答案 考虑充分性,设第一个不能被 (p) 整除的是 (a_i,b_j),那么对于 (c_{i+j}),它的其它项中一定都含有 (p) 因子 |
D 对一个 (n imes n) 的棋盘,每个格子上有一个字母,表示遇到这个格子就向着某个方向走或者停止。现在给定从每个位置开始会走到的位置,或者死循环,试构造一个合法的棋盘,或者输出 INVALID。 | 除去死循环的部分,终点相同的点会形成独立的联通块,我们从终点开始反向 DFS 即可 如果死循环是单独的一个点,则 INVALID 否则,我们强行构造出一个二元环,然后当做第一种情况做即可 |
E 需要在 (n) 个人中选出 (p) 个人站着队伍中的各个位置上,再从剩下的 (n-p) 个人中选出 (k) 个人作为观众。第 (i) 个人作为观众可以有 (a_i) 的得分,作为队伍中第 (j) 个位置上的人可以有 (s_{i,j}) 的得分,求得分的最大值。(nleq 10^5, pleq 7) | 将人按照 (a) 从大到小排序,这样如果敲定了哪些人是队伍,那么剩下的靠前的 (k) 个一定是观众 考虑状压 DP,设 (f[i][j]) 表示考虑了前 (i) 个人,队伍中各个位置的状态为 (j) 的得分最大值,决策下一个人放在队伍的哪一个位置,或者不入队,如果不入队则判定如果 (i-popcount(j) leq k) 则去当观众 |
F 定义一个 (n) 元序列 (p_i),如果 (n=1),则序列权值为 (0),否则序列权值就是原序列排序后相邻两项乘积的和。现在等概率地选出一个子序列,问它的权值的期望是多少。支持动态单点修改。 | 对于静态情况,答案为 $$sum_{i=1}^n sum_{j=i+1}^n frac{p_i p_j}{2^{j-i+1}}$$ 考虑用线段树维护,对于区间 ([l,r]),我们设 (val) 为当前区间权值,(lv=sum_{i=l}^r p_i2^{i-l}),(rv=sum_{i=l}^r p_i/2^{i-l+1}),(sz) 是当前区间内数的个数,则 $$val=val_L+val_R+frac{1}{2} vl_Lvr_R/2^{sz_L} sz=sz_L+sz_R vl= vl_L+vl_R2^{sz_L} vr=vr_L+vr_R/2^{sz_L}$$ 对于单点 (a),它的 (val=0, sz=1, vl=a, vr=a/2) 考虑到序列中有重复元素,我们先将所有元素(包括修改的)一起读进来排序,然后将原始的先激活,修改后的先不激活((val=0,sz=0,vl=0,vr=0)),一起挂在线段树上 |
2020年3月11日