NOIP Camp #1 比赛记录

NOIP Camp #1

某机构举办的noip/csp冲刺营。

题意&题解

A

定义函数 (f(a_1,a_2...a_n)) 为:

[egin{cases} a_1 & (n=1)\ f(a_1oplus a_2,a_2oplus a_3...a_{n-1}oplus a_n) & (n>1) end{cases} ]

其中 (oplus) 表示二进制按位异或运算。

(注意仔细看题,并不是 (a_1...a_n) 的异或和!)

多组询问。每次给定 (L,R),求 (max {f(a_l,a_{l+1}...a_{r}), Lle lle rle R})

(nle 1000,mle 10^6)

题解:注意到 (nle 1000),考虑处理每对 (F(l,r)) 表示 ([l,r]) 区间的答案。

(f(l,r)) 表示 (f(a_l...a_r))。注意到它等于 (f(l,r-1)oplus f(l+1,r))

然后两维求个前缀max就可以得到 (F)

复杂度是 (O(n^2) - O(1)) 的。

B

给定 (n,m),求有多少 (x) 满足:

  • (xin [0,n])
  • (forall k, xmod 10^kge mmod 10^k)

(n,mle 10^{50})

题解:很明显它说的就是每一位都 (ge m) 对应的那一位。

然后类似数位dp,处理一下卡界就行了。

C

(n) 盏灯排成一列,初始所有灯均为熄灭状态。

你需要对这 (n) 盏灯进行 (n) 次操作。

对于第 (i) 次操作,选取 (i) 的所有质数倍标号的灯,将它们的状态取反(点亮变为熄灭,熄灭变为点亮)。

你需要回答最终有多少盏灯为开启状态。

90pts: (nle 5e7)

时限2s。

题解:这题我只会90pts

首先线性筛出所有质数,然后模拟它的过程,直接就是 (nloglog n) 的,可以获得 (1e6) 的部分分。然而,过 (1e7) 需要少量的乱搞。尽管是乱搞,它对思路的启发也很有意义。

分析一波, 它其实求的是 ([1,n]) 种有多少个数有奇数 质因数。

对于 (5e7) 的范围,线性筛写好看点是能很快跑出来的。只是 (loglog n) 有点卡而已,甚至把它常数卡一卡也就过了。

考虑 (> sqrt{n}) 的那些质因数,只会出现一种, 且次数为 (1)。可以从筛好的质数种枚举,设它为 (p)。那剩下的部分就 (le n/p),要求由偶数种质因数构成 (注意到我们先选了一个,所以剩下那些就是偶数个)。这个可以预处理出来,设 (g(n,0/1)) 表示由偶数/奇数个质因数构成的方案数,可以用原题筛出来的那个东西求前缀和轻松得到。

然后就解决了包含一个 (> sqrt{n}) 的质因数的情况,复杂度 (O(n))。接下来考虑那些 (le sqrt{n}) 的质因数。

我们发现它们很少,由这些小质因子构成的数,也在 (0.75n) 左右。于是我们考虑用 DFS,就可以精确枚举到所有剩下的数,略小于 (n)。这个DFS写出来可以发现,它显然是O(答案)的,于是它是 (O(n)) 的,且常数小。

然后就可以卡过 (5e7) 了。

据说剩下10pts是留给出题人切的,(nle 10^{13})。目测需要min-25,或者是powerful number等神秘筛法来做。

D

根本不会。再见~

总结

A题看错题意,分数-100

B题没看清范围,1e50用的long long,分数-50

C,D算是正常发挥了。

暴露的一个问题是,做题过于求快,而不稳,导致题意读错了。也许是受 CF/AT 比赛的影响,也有我个人的原因。

对于NOIP/CSP赛制的比赛,考场策略与节奏还需要不断摸索和练习。

原文地址:https://www.cnblogs.com/LightningUZ/p/15362973.html