写给OIER入门选手的话
本文针对sser,外校学生请到隔壁参观
看完记得点赞!
一、关于刷题
1、关于网站
初学者推荐在ssoj上刷题,至少AC200+。luogu上也有好题,不过面对初学者的题要么是搞怪的,要么就是过水的。量力而为。至于国外网站,这里推荐 CF 1000 分左右以及 atcoder 的ABC的前三题。时间和精力允许的情况下,可以打比赛。推荐 Div. 3。
国内网址推荐 这个
2、关于时间
入门时候,题都比较简单,每一道题平均 15 分钟不到。因此我认为每天平均1小时到 1.5 小时足矣。刷到后面题难了,1.5 小时左右为宜。时间少手还没热就结束了,时间多了容易失去对编程的兴趣。总之自己把握,千万不要让编程成为你的负担。
3、 关于心态
刷题,不是为了追求 ssoj 上那个可怜的排名,因此千万不要看题解。不懂可以问老师,老师可以很好地引导你去思考,而不是像大多数题解一样毫无营养。心态是重要的,有一个好的心态是前提。
4、 关于选题
首先是选题:推荐按专题刷。综合题需要在考试一个月前开始准备。一个专题,先刷模板,在刷模板改编,最后在选定算法标签后随机跳题。
5、关于coding(敲黑板!)
1)请尽量使用scanf代替cin,printf代替cout,数据大于10^{6} 要使用读入优化
int read(){
char ch; int x=0, f=1;
while(!isdigit(ch)){ ch=getchar(); if(ch=='-') f=-1;}
while(isdigit(ch)) x=(x<<3)+(x<<1)+(ch^48), ch=getchar();
return x*f;
}
2)代码风格各有不同,但缩进必须按规范来
3)变量名不要长,一类变量要尽早固定一个名字,不要经常变动
4)不要压行。但一些通常或惯用函数连在一起的语句可以写在同一行:
int a=q.top(); q.pop();
int find(int x) {
return x==f[x]?x:(f[x]=find(f[x]));
}
5)将代码分块,不同功能块之间加空行,或把它们封装进函数/结构体,不要所有东西都堆在主函数里。
二、关于上课
1、数量
对于初一初二的同学,在学校集训的时间大约只有周三下午和周六上下午,如果你希望通过信息报送2+4,这点时间是完全不够的,你会被同学吊打。对于课外编程班,这里不方便宣传。但有那种“少儿”“大数据”“区块链”“积木”“机器人”之类的词语的班就不要报的。推荐那种带 “NOIP” “CSP”字眼的班。进度推荐1年左右从入门学到动态规划的。
2、难度
无论是课内还是课外,请在报班之前询问进度。若有试听尽量参加。
3、专注
上课打游戏大概率不会被老师发现,但为了个人的发展 和对老师的可怜 请不要那么做。一来被发现了很没有面子,而来时间本来就很珍贵,专时专用,效率更高。这个之后会再讲。
三、态度
1、与文化课的平衡
首先说一句最重要的,文化课一定不能丢。但也不用过于纠结排名,不要说跌了几名就发愤图强,不刷信息题了。以我个人观点,年级40名以内都算可以接受,跌出去就真的要小心了。普及组考试前不建议听课,若你拿到了2+4的名额,那么你在提高组考试前可以考虑停一个星期的课。
2、定位
不是不能把编程当做兴趣,只是当做兴趣难以在题目变难时鞭策自己继续学习。因此这里推荐即使你真的爱好,也好有目标,功利未必是坏事。当你遇到瓶颈时,这个目标就是你前进的动力。目标包括但不限于:
- 和父母谈条件(新电脑、买游戏、买AJ……)
- 和 CRXIS 谈条件(外网,source browser……)
- 来自 2+4 的诱惑
四、目标
1、“2+4”?
作为一个过来人,我并没有在2+4时经历大风大浪,因为我普及前10保送了。但这个很看运气,即使你有这样的能力也不能打包票。以后的政策可能会变,但万变不离其中。刷好题,稳在同年级的前2名,考试时放松心态,问题不大。
2、自招?
这一点,我也在路上,经验尚不能传授。但我坚信,一分耕耘一分收获,十分耕耘两分收获。收益未必与付出成正比,但付出了总比没付出好。这里鸡汤讲多了,下面讲些实际的东西。
2020.2 更新:自招这条路可能没了,若是学信息竞赛只为了此建议退出。毕竟强基计划是一个好选择。
五、考场发挥
这是个千古难题。如何不失手,谁也说不准。但有些方法可以尽量避免失手:
1、考试时按自己习惯、舒服的坐姿,用平常心对待。
2、带巧克力。它不仅能补充能量,还能在没有思路时保持思考。同理,这里还推荐葡萄适(港版)。
3、想好再写,避免整篇代码删掉重新,既浪费时间,又影响心态。
4、考试前洗把脸,喝口水,上个厕所。告诉自己,“你一定行!”
5、时间分配
以提高组为例:
T1 40'
T2 60'
T3 50'
对拍+升级骗分+检查文件流 60'
6、考场代码书写
不要用这些变量名 https://www.luogu.org/discuss/show/166156
return 0 一定要写
freopen 仔细检查
#include<bits/stdc++.h> 可以用
c++11 的特性别用
for(auto v:g[u])pair<int,int> p={1,1}7、考场代码检查
1、多组数据认真检测数组清零
2、区间端点、大小的 +1 or -1
3、数组大小
4、全局变量与局部变量重名(警告不会提醒!注意 K,M,P,F 四个变量)
六、关于游戏
——游戏不一定是害人的
——不要边学边玩游戏
——游戏定时定量
——最好说服家长,在他们的监督下玩
——周一到周四绝对不能玩游戏
至于量,每周一个半小时以下为宜