前言
今天考试四道题的题目震撼力非常强
四道题目,题目分别是
数论,大根堆,有向图,博弈论(真直白)
T1 数论
求 ∑ i n ∑ j p φ ( i j ) m o d 1 0 9 + 7 \sum_i^n{\sum_j^p{\varphi(i^j)}} \; mod\; 10^9+7 i∑nj∑pφ(ij)mod109+7
考试思路
第一眼看的时候吓死我了,还以为是什么莫反,杜教筛之类的,但是再看的时候,冷静下来,联赛怎么会考那玩意?(不过联赛也考过动态DP)
看看数据,p等于0直接预处理欧拉函数就行了
但是我好像不记得
φ
(
i
j
)
\varphi(i^j)
φ(ij)与
φ
(
i
)
\varphi(i)
φ(i)有什么关系
这时候,还是打表最好用,打表发现,这是个等比数列,公比是i,化简后就是
φ
(
i
)
×
(
i
0
+
i
1
+
i
2
+
…
…
i
p
)
\varphi(i)\times (i^0+i^1+i^2+……i^p)
φ(i)×(i0+i1+i2+……ip)
右边的是一个等比数列求和,左边的可以线性筛预处理
所以答案就为
∑
i
n
φ
(
i
)
×
i
p
−
1
i
−
1
m
o
d
1
0
9
+
7
\sum_i^n{\varphi(i)\times {\frac{i^p-1}{i-1}}}\;mod\; 10^9+7
i∑nφ(i)×i−1ip−1mod109+7
只要预处理逆元就行了,但是
i
p
i^p
ip我并没有什么很好的思路,快速幂的话就是
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn),A不掉
就先写了80分走了
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL N = 1e7+7;
const LL mod = 1e9+7;
LL prime[N],cnt;
LL eular[N];
LL Jc[N];
LL Ny[N];
bool vis[N];
void pre(LL n)
{
eular[1]=1;
for(LL i=2;i<=n;i++)
{
if(!vis[i])
{
prime[cnt++]=i;
eular[i]=i-1;
}
for(LL j=0;prime[j]<=n/i;j++)
{
LL t=prime[j]*i;
vis[t]=1;
if(i%prime[j]==0)
{
eular[t]=eular[i]*prime[j];
break;
}
eular[t]=eular[i]*(prime[j]-1);
}
}
}
LL n,p;
LL Pow(LL a,LL b)
{
LL res=1;
while(b)
{
if(b&1) res=res*a%mod;
a=a*a%mod;
b>>=1;
}
return res%mod;
}
LL ans=0;
void Pre(LL n)
{
Ny[1]=1;
for(int i=2;i<=n;i++)
Ny[i]=(mod-mod/i)*Ny[mod%i]%mod;
}
int main()
{
cin>>n>>p;
pre(n);
Pre(n);
for(LL i=1;i<=n;i++)
{
LL q;
if(i==1) q=p;
else q=(Pow(i,p)-1)*Ny[i-1]%mod;
ans=(ans+eular[i]*q%mod)%mod;
}
printf("%lld",ans);
return 0;
}
正解
第一次知道线性筛还能预处理
i
p
i^p
ip
然后就没了
T2 大根堆
求1~n这n个点构成的大根堆个数,其中某些点被强制指定为叶节点
考试思路
先考虑没有强制制定时
写了个
n
2
n^2
n2的DP
F
[
i
]
=
∑
j
i
−
1
C
i
−
1
j
F
[
j
]
F
[
i
−
1
−
j
]
F[i]=\sum_j^{i-1}{C_{i-1}^jF[j]F[i-1-j]}
F[i]=j∑i−1Ci−1jF[j]F[i−1−j]
然后想写个暴力对拍一下,但是没想到这个暴力我调到最后,这两个算法的答案都不一样,我也不知道哪个对,只能写分段,最后暴力挂了
害得我压根没注意到这个DP是有规律的
F
[
i
]
=
i
!
F[i]=i!
F[i]=i!
唉,最后只有20分
正解
考虑每个点能够插入的位置个数是固定的,证明略
倒着插入每个电,如果某个点不是叶子,那么插入后,他的两个儿子都能放置节点,所以总的能放的位置数加一
放入一个叶节点后,他的儿子不能放,所以总的能放的位置数减一,最后乘起来就没了
T3 有向图
写了个暴力还写挂了
T4 博弈论
想推一推性质,但是推了个寂寞,写个DP连样例都不过
直接不写了
总结
这场的暴力分打的不好,导致后半场一直不冷静,还是应该先写暴力