2019.08.13【NOIP提高组】模拟 A 组 总结

本文分享了一次编程竞赛的经验,包括题目解析、算法应用及心态调整。详细讲述了如何通过拆分、容斥原理解决计数问题,利用规律和递推式处理复杂计算,以及将问题转化为图论求解的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GG,爆了,心态巨崩。。。

考场:\(20 + 15 + 3 = 38\)


T1:

神奇拆分+容斥?
正解将\(a[i]\)拆分成\(c[i]*m+p[i]\)
可以得到 \(\sum{p[i]}\) %\(m=n\)%\(m\)
\(\sum{p[i]}\) 可能会大于\(m\),但肯定小于\(k*(m-1)\)!!
我们就可以枚举 。
由于直接用组合数可能会使一些\(p[i]>m\),所以我们要容斥。
对于每个\(\sum{p[i]}\) ,我们都可以枚举有几个\(p[i]>m\)。然后容斥。
再将n剩下的m放入这K个数即可。


T2:

神奇OJ连交3次结果CE。
结果是打表找规律?
神奇枚举求递推式最后成功找出?!
tql!!!


T3:

对于\(limit1,2\)就是使序列\(1~n\)的排列。
对于\(limit3\),我们可以将其看做是两个最长上升子序列正好覆盖整个序列,证明显然。
我们可以做一个前缀\(max\)序列。这样对于\(max[i]\),保证\(max[i]>=i\)
而且保证\(max[n]=n\)
如此,我们可以将问题转化成图。
那么我们可以将问题变成:
求从\((1,1)\)\((x,y)\)再到\((n,n)\)的方案数,途中不能触碰到\(y=x-1\)的直线(不能使\(max[i]<i\))。
对于触碰到的方案数用题解说的翻折法即可。
预处理阶乘和逆元\(O(n)\),询问\(O(1)\)。时间可过。


总结:

不要灰心,不要放弃。。。
交题的时候不要按多次(x>1),否则。。。
对于这种计数题,要认真思考,大胆猜想,小心求证。
要善于将题目转化成其他样子,或许更容易能想到。

现在:\(100 + 100 + 100 = 300\)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值