Educational Codeforces Round 12 F
大意:
求 n(n<=1011) 以内恰好有 4 个因数的数的个数
分析:
首先一个数恰好有
设
这一点我们用dp来解决。
记 pj 为第 j 个素数,
1.dp[n][1]=n
2.dp[n][j]=dp[n][j+1],dp[⌊n/pj⌋][j] ,
也就是说 dp[n][j+1]=dp[n][j]−dp[⌊n/pj⌋][j]
令 pk 是最小的大于 n−√ 的素数,那么 π(n)=dp[n][k]+k−1
Codeforces Round #346 G
大意:
给 n (
分析:
记 dp[l][r] 为取走的区间为 [l,r] 的方案数,总方案数就是
ans=∑l=1n∑r=lndp[l][r]
l=r 时, dp[l][l]=hl−1
l<r 时, dp[l][r]=min(hl−1,hl+1−1)∗Πr−1i=l+1min(hi−1−1,hi−1,hi+1−1)∗min(hr−1−1,hr−1)
那么我们有
ans=∑ni=1(hi−1)+∑nl=1∑nr=l+1min(hl−1,hl+1−1)∗Πr−1i=l+1min(hi−1−1,hi−1,hi+1−1)∗min(hr−1−1,hr−1)
关键在于后一个长长的式子,即
∑nl=1∑nr=l+1min(hl