2020.12.01【NOIP提高B组】模拟 总结

2020.12.01【NOIP提高B组】模拟 总结

1.瑰丽华尔兹

打了50分 d p dp dp,感觉样例的图给错了( 2 2 2不是向下吗?),答案是对的。

然后怕空间挂,有滚动了一下。

正解可能就是一段一段考虑,我反正不会。

正解:

果然如此。


f i , j , k f_{i,j,k} fi,j,k
表示第 i i i段在 ( j , k ) (j,k) (j,k)位置的最大格子数。

然后暴力转移,可以卡过(不要滚动数组)。

如果数据加强要单调队列优化。

2.Heatwave

暴力 s p f a spfa spfa。对于每个点都做一遍。

正解可能是缩点 t a r j a n tarjan tarjan,想到了,但是没时间打了。

比赛时想多了,结果数据似乎卡了 s p f a spfa spfa,挂了8.3分。

正解:

发现最小生成树最优。

所以建出来最小生成树。

然后倍增一下。


f i , j f_{i,j} fi,j
表示 i i i结点向上
2 j 2^j 2j
级祖先,
g i , j g_{i,j} gi,j
表示 i i i结点向上
2 j 2^j 2j
级祖先经过路程最大值。

倍增+ l c a lca lca就过了。

3.Count

一开始看到平均数直接用逆元做。

然后后面发现 f ( x ) f(x) f(x)一定是整数。

然后就发现当 x > 1 , f ( x ) = x x>1,f(x)=x x>1,f(x)=x

不会证明。

可能与欧拉函数有关。

然后想了一堆方法也没有成功。

时间复杂度还是 O ( r ) O(r) O(r)

正解可能是发现
f ( x ) k f(x)^k f(x)k
就与 f ( x ) f(x) f(x)的某个幂同余,然后直接用等差数列公式做。

或者是玄学的组合数算法?

应该是数学。

以后得补数学。

正解:

拉格朗日插值,虽然我也不会,看着公式打了一下就过了。

首先证明显然,就用当 ( x , y ) = 1 (x,y)=1 (x,y)=1,有 ( y − x , x ) = 1 (y-x,x)=1 (yx,x)=1 ( a , b ) (a,b) (a,b)表示 a , b a,b a,b的最大公因数),然后两两配对。
然后对于就分 1 1 1 l − 1 l-1 l1 1 1 1 r r r计算再相减。

因为 f ( x ) = x ( x > 1 ) f(x)=x(x>1) f(x)=x(x>1),所以考虑
2 + ∑ i = 2 r i k 2+\sum_{i=2}^r{i^k} 2+i=2rik
用拉格朗日插值做。


F i F_i Fi
表示当 r = i r=i r=i时的答案。

先预处理好 1 ≤ i ≤ k + 2 1\leq i\leq k+2 1ik+2的情况

然后就有拉格朗日插值:
F x = ∑ i = 1 k + 2 F i × ∏ j = 1 , j ≠ i k + 2 x − j ∏ j = 1 , j ≠ i k + 2 i − j F_x=\sum_{i=1}^{k+2}{F_i\times\frac{\prod_{j=1,j\not=i}^{k+2}{x-j}}{\prod_{j=1,j\not=i}^{k+2}{i-j}}} Fx=i=1k+2Fi×j=1,j=ik+2ijj=1,j=ik+2xj
这样暴力算时60分。

把前几项 i i i的分数列出来,发现除了一些东西又乘了一些东西,所以边做边搞。

注意算逆元时如果 i − j i-j ij为负数,让 i − j + m o d i-j+mod ij+mod在模上 m o d mod mod

结果90分被卡常。

把加法再模换成判断与模数的大小关系,用减法。

再用 r e g i s t e r register register就行了。

4.君と彼女の恋

感觉是组合数。

可以发现序列长度一定小于等于 m m m,用抽屉原理证明。

然后就推不下去。

本来还想 d p dp dp,结果 d p dp dp怎么判断是否余数相同呢?

打了暴力 d f s dfs dfs,20分。

正解:

发现 m m m很小,所以 d p dp dp时只要处理模数然后乘以方案数。

然后就不会了。

组合数也讲了很久。

5.闲话

A组。。。。

第一题没看懂????

第二题数据结构???

第三题推公式????

第四题构造题?什么鬼。

表示一题不会。

6.总结

应该可以上100。

只要T1不挂即可。

最后98.3分。

初一第2。

挂了。

第一题50。

第二题8.3。

第三题20。

第四题20。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值