文章目录
A The power of Fibonacci
分析:将 1 0 9 10^9 109拆分成 2 9 ∗ 5 9 2^9*5^9 29∗59,然后各自求循环节,之后采用中国剩余定理合并
B Quadratic equation
分析:解方程求二次剩余
C Inversions of all permutations
题意:给定长度为n的数列,共有
n
!
n!
n!中排列,给定每个排列
t
i
t_i
ti的值为
b
t
(
r
i
)
b^{t(r_i)}
bt(ri),
t
(
r
i
)
t(r_i)
t(ri)是排列中逆序对的个数
分析:先假设没有重复的值,那么将第k小的值加入的贡献是
∗
(
b
0
+
b
1
+
b
2
+
.
.
b
k
−
1
)
*(b^0+b^1+b^2+..b^{k-1})
∗(b0+b1+b2+..bk−1),我们先将所有数看成是没有相同元素的,求出答案,然后考虑容斥,如果一个数出现了i 次,那么最后的结果应该除以
b
0
+
b
1
.
.
+
b
i
−
1
b^0+b^1..+b^{i-1}
b0+b1..+bi−1
参考代码:code
D Knapsack Cryptosystem
折半
E All men are brothers
dp,注意dp回退即可
F Birthday Reminders
题意:小A有n个朋友,其中第i个朋友会在时间
t
i
t_i
ti想起今天是它的生日,一个人在时刻
t
t
t祝贺过小A之后,它会在
t
+
1
t+1
t+1告诉其它人,小A脸盲,只能记住时间
t
t
t有多少个朋友祝她生日快乐,问有多少种可能排列
分析: 枚举t时刻的人数即可,注意限制不能超过小于t时刻想起的人,不能大于t时刻想起的人加上个时刻提醒的人
参考代码:code
G Checkers
waiting
H Cutting Bamboos
线段树
I KM and M
题意:
分析:考虑每一位的贡献,
c
o
u
n
t
(
i
)
=
(
k
∗
M
)
&
M
&
(
2
i
)
=
2
i
count(i) = (k*M)\&M\&(2^i)=2^i
count(i)=(k∗M)&M&(2i)=2i,
也即
⌊
k
∗
M
2
i
⌋
−
⌊
k
∗
M
2
i
+
1
⌋
∗
2
,
1
≤
k
≤
N
\lfloor \frac{k*M}{2^i}\rfloor -\lfloor \frac{k*M}{2^{i+1}}\rfloor*2,1\leq k\leq N
⌊2ik∗M⌋−⌊2i+1k∗M⌋∗2,1≤k≤N
参考代码:code
J Symmetrical Painting
参考代码:code