T 1 T_1 T1给出一个长度为 n n n的序列,你可以进行若干次操作,每次花费 c j c_j cj元将 a i a_i ai变为 ⌊ a i j ⌋ \lfloor \frac{a_i}{j} \rfloor ⌊jai⌋,你一共有 k k k元。问最终序列的中位数最小是多少。
其中 1 ≤ n , m ≤ 5 ∗ 1 0 5 , 1 ≤ a i ≤ m , 1 ≤ c i , k ≤ 1 0 9 1 \leq n,m \leq 5*10^5,1 \leq a_i \leq m,1\leq c_i,k \leq 10^9 1≤n,m≤5∗105,1≤ai≤m,1≤ci,k≤109。
赛时我并没有想到二分 + d p +dp +dp,以为是 d p dp dp,结果没有想出来,大概想了 30 30 30分钟就放了。
T 2 T_2 T2给出一个无向图,进行 q q q次询问,每次给出一个点 x x x,对于这个图的所有边,如果 c i ⊕ x > k c_i \oplus x > k ci⊕x>k,则这条边有效,否则这条边不存在。求互相联通的点对个数。
1 ≤ n , m ≤ 1 0 5 , 0 ≤ c i , x , k < 2 30 1 \leq n,m \leq 10^5,0 \leq c_i,x,k<2^{30} 1≤n,m≤105,0≤ci,x,k<230。
一开始我先打了 O ( ( n + m ) q ) \mathcal O((n+m)q) O((n+m)q)的暴力。
然后观察了一下后面两组数据点,发现虽然 1 ≤ n , m ≤ 1 0 5 1 \leq n,m \leq 10^5 1≤n,m≤105,但是 c i , x , k < 2 10 c_i,x,k<2^{10} ci,x,k<210,理论上记忆化就可以拿下 80 80 80分。
但是赛后发现第二组数据 T T T了,只有 50 50 50分,可能是我实现常数太大了。
T 3 T_3 T3需要你进行若干次操作,要么将 s i s_i si拼接到当前字符串,要么删除结尾的 k k k个字符,不足 k k k个时则全部删完。输出最少的操作次数,如果不行则输出 − 1 -1 −1。
赛时不会打暴力,就去看 T 4 T_4 T4。
T 4 T_4 T4给出一颗树,每个节点都可以给他的祖先节点投票,问对于每个点 i i i,他的票数是否可以严格大于其他人的票数。
1 ≤ n ≤ 1 0 6 1 \leq n \leq 10^6 1≤n≤106。
赛时直接打了个贪心跑路。
总结:这次考试没有看出 T 1 T_1 T1的二分很吃亏,平时还是要多注意对题目的总结和归纳。