GDKOI2021 Day 1
morning
打了一早上模拟赛,T1一开始想到了方法,确定出现问题的行列然后排除,但是感觉不大行,先去30min把T2的暴力搞定,然后T3搞了搞发现题意理解错了,然后随便打了一个小贪心但是还是有问题,应该炸了。T4正解并查集,我打了一个暴力深搜骗点分。
afternoon
先讲了半个小时题解。
T1他基本跳过。
T2是从右往左维护单调队列,二分查找y,然后
a
n
s
=
y
∗
(
r
−
l
+
1
)
−
(
S
[
r
]
−
S
[
l
−
1
]
)
ans=y*(r-l+1)-(S[r]-S[l-1])
ans=y∗(r−l+1)−(S[r]−S[l−1])
S数组是前缀和。
T3正解贪心,尽量调整使最小的数在最后合法的匹配中。
设当前最小值为x,最大值为y,若
x
+
y
<
L
x+y<L
x+y<L则把x删掉,若
x
+
y
>
R
x+y>R
x+y>R则把y删掉。
T4离线之后并查集维护连通块,查询大小即可
讲座:数论"基础"
素数
这部分比较简单,主要是欧拉筛(线性筛)。让每个合数只被最小质因子筛掉。把前面找过的质数,乘以现在找到的质数,可以求出最小质因子。
判断:
i
f
(
i
/
p
r
i
m
e
[
j
]
=
=
0
)
b
r
e
a
k
if(i/prime[j]==0) break
if(i/prime[j]==0)break
整除,gcd,lcm
-
若 c ∣ a , c ∣ b c|a,c|b c∣a,c∣b则 c ∣ ( m a + n b ) c|(ma+nb) c∣(ma+nb)
-
若 a ∣ m , b ∣ m a|m,b|m a∣m,b∣m则 l c m ( a , b ) ∣ m lcm(a,b)|m lcm(a,b)∣m
-
a ∗ b = l c m ( a , b ) ∗ g c d ( a , b ) a*b=lcm(a,b)*gcd(a,b) a∗b=lcm(a,b)∗gcd(a,b)
-
l c m ( m a , m b ) = m ∗ l c m ( a , b ) lcm(ma,mb)=m*lcm(a,b) lcm(ma,mb)=m∗lcm(a,b)
-
设 g c d ( a , b ) = d , a = k ∗ b + r gcd(a,b)=d,a=k*b+r gcd(a,b)=d,a=k∗b+r
因为 d ∣ a , d ∣ k b d|a,d|kb d∣a,d∣kb所以 d ∣ r d|r d∣r
欧拉函数
性质
- φ ( 1 ) = 1 φ(1)=1 φ(1)=1
- 当p为质数时, φ ( p ) = p − 1 φ(p)=p-1 φ(p)=p−1
- 当p为质数时, n = p k , φ ( n ) = p k − p k − 1 = ( p − 1 ) ∗ p k − 1 n=p^k,φ(n)=p^k-p^{k-1}=(p-1)*p^{k-1} n=pk,φ(n)=pk−pk−1=(p−1)∗pk−1
还有好多。。。。
应用就是欧拉筛求欧拉函数。
同余
定义:
m
m
m%
a
a
a=
m
m
m%
b
b
b记为a同余b(mod m)
主要有模m剩余系和既约剩余系。
剩下放点截图,自己看
%m控制最小非负整数解
讲完了。
evening
疯狂颓废。搞了搞博客和ybtoj。