Codeforces Round #305 (Div. 1)

Codeforces Round #305 (Div. 1)

A

题意:给(h_1,a_1,x_1,y_1,h_2,a_2,x_2,y_2),每次变换形如 (h_i=x_i*h_i+y_i mod m) 。每次对两个 h 做变换,问最少多少次能变成 (a_1,a_2)(m le 10^6)

key:exgcd

主要是傻逼了,这题有坑,因为没保证 m 和 x 互素,所以其实不是一个环,可能先变换若干步再进入循环。所以先要暴力,保证两者都进入循环之后再用 exgcd 求解。

复习:对于 Ax+By=C ,若 (x,y) 是一组解,那么 (x-B/d,y+A/d) 也是一组解,并且能完全遍历所有解。其中 d=gcd(A,B)

C

题意:给 n 个数,q 次操作,每次是把某个数插入/删除到当前集合中,每次操作后输出当前集合中互素的数字对数。 (n,q le 2*10^5, a_i le 5*10^5)

key:莫比乌斯函数

看到这个题我就惊了,这不我前段时间出给福建省赛的题吗,一模一样…………这也能撞思路我也服了

考虑当前数字的影响,记为 x 。把反演公式写出来,发现答案只与 x 的约数有关。进一步的,由莫比乌斯函数的性质,只与无平方因子数有关。所以复杂度是 (O(2^6*q))

实际上直接暴力所有因数也能过,所以我怀疑我出给福建的题也被这样过掉了……

D

题意:平面上给 n 个点,给每个点染色,使得同横坐标和同纵坐标的点,黑白点数量之差小于等于 1。求一组方案 (n le 2*10^5)

key:欧拉回路

套路:建出二分图。

发现限制即为:一个点的所有出边中,黑白边数量之差小于等于1。如果这个图所有点都是偶度,那么显然存在一条欧拉路,可以把路径上的边黑白交替染色。这样得到的数量之差是0.

如果存在若干个奇度点,那么把它配对凑成欧拉图,对于跑出来的欧拉路,要根据边的定向来确定颜色(比如左部向右部是黑,否则是白),这样才能保证那个性质。按路径交题染色则不行。

E

题意:给 n 个字符串, q 次询问第 k 个串作为子串在 [l,r] 中出现多少次。 (n,sum |s_i| le 2*10^5,q le 5*10^5)

key:AC自动机,树状数组

首先转化成询问前缀。考虑一次询问:AC自动机经典问题。插入一个串时,把经过的点全+1,建出fail树,查询子树和。

查询点可以找到,只需要处理前缀。可以离线,每次单点+1,区间询问,对 fail 树的 dfs 序上面跑树状数组即可。

原文地址:https://www.cnblogs.com/dqsssss/p/11179281.html