2018NOIp提高组考前集训心得

背景
弱省小白至强省名校集训,心得颇多
心得
学习划水一年,连模板都别不全的小白到某市某中学参加考前集训。
之前在自己的学校里都是各种考试韧性测试,各种考试爆零。一心只求正解,殊不知出题人心险恶。
而某校则不同。他们的题目大都一套一套做,并且考试时既有签到题,也有玄学题。上午考完试后,会发出天书题解,并会在讲题前留有时间自己分析。在讲题时,都是些OI大佬,每个人都会有一套自己的讲题方法。
废话不多说
在集训那些天,本人倒是补上了之前部分记不到的模板。在讲一道签到题求逆元时,详解了三种求逆元的方法:
?:费马小定理: a p − 2 = a − 1   ( % p )   a^{p-2}=a^{-1} ~(\%p)~ ap2=a1 (%p) 
?:线性求逆元: i n v i = ( p − p / i ) ∗ i n v p % i % p inv_i=(p-p/_i)*inv_{p\%i}\%p invi=(pp/i)invp%i%p
?:拓展欧几里得: 一大玄学算法,以类似与求模方程的解法求逆元…… 费马小定理适用于单个数求逆元,线性求逆元法适用于某区间内所有数的逆元,拓欧的话随缘强者专属
除此之外,就是区间类问题:
?:只维护不修改,O(1)算法ST最快
?:只求和且修改,树状数组常数优
?:既求最值由算和,用线段树最自由
此外,ST表用的时2进制思想,通过log2来划分区间;树状数组无法维护就最大值,借助计算机补码来缩小常数;线段树是骗分最常使用的数据结构。
?:矩阵优化:通过建立转移矩阵,利用快速幂算法,把线性做法的时间复杂度降到log级别


以上种种,很少出现在正解之中
这不是废话


这次外出考前集训,学习到的知识点其实很少某蒜客上都讲过。这次学到的大都是部分分的拿法以及考试的策略问题。
—————————暴力是正解之母,骗分是省一之师—————————
暴力的优化往往可以拿到很高的分数。在之前本人只想正解
以上算法常用于骗分:
1.去他的组合数计算,线性求阶乘后逆元乘法取模,把帕斯卡·卢卡斯完全抛之脑后。当然,本人记不到他们的代码
2.忘记繁琐的区间模拟 逆序对,树状数组代码短[与线段树相比],好理解[相比于ST表],充分调用了计算机底层运算,不要大常数,不要O( n 2 n^2 n2),只要O( n l o g n nlogn nlogn),你值得拥有。
3.朴素动态规划或暴力递归,复杂度我确不敢恭维。线性算法要超时?矩阵优化来帮你。集训前本人对矩阵不是一窍不通的。推出转移矩阵,写一个矩阵乘法函数本人不会写类,懒得重载运算符+快速幂,没有AC也有80.
4.内存超限惹不起,滚动数组造奇迹。在ST表或求大数斐波那契时,本地DEV不会报MLE,一提交就可能超限。化二位为一维,化一维为个体。
优化操作,滚动最秀;内存超限,降维千古

//斐波那契滚动
int a=1,b=1,c;
for(int i=3;i<=n;i++){
     c=a+b;
     b=c;
     a=b;
}
cout<<c<<endl;

5.打表是一门技术,有时也需要靠运气。


注意事项
1.bug!!!如果你写完代码跑样例的时候摊上bug,那你多半gg了。写代码之前一定要看清题目,写的时候也要谨慎。重庆好啊,windows系统可以用devcpp调试
2.十年竞赛一场空,没写long long见祖宗!不要让long long阻碍你的梦想,不要为RE让你止步不前。
3.AC还是GG,freopen很关键!在考试时应反复检查自己的文件读取,提交时不要在freopen前留下// [尤其时很多用惯了OJ评测的同学,需要尤为注意]
4.数组大小要合适。开小了,AC前加P;开大了,你只剩MLE。


人生没有最短路,你我就是连通图,今天你AC,弗骄,弗傲,明日…………

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值