NOIP前的模板复习和注意事项
联赛除去今天刚好只有一个星期了,最后一个星期也很关键,要吃好睡好保持心情愉悦.当然也免不了最后的复习计划.
首先是模板,之前还有很多模板没有复习到,这些东西是一定要落实到位的.
每天往后面写一点...一定要写完...都是很基础的板子了...
- [x]
11.3
【模板】KMP字符串匹配 - [ ]
11.3
【模板】左偏树(可并堆) - [x]
11.3
【模板】最近公共祖先(LCA) - [x]
11.3
【模板】最长公共子序列 - [x]
11.4
【模板】网络最大流 - [x]
11.4
【模板】最小费用最大流 - [ ]
11.4
【模板】扩展中国剩余定理(EXCRT) - [ ]
11.4
【模板】单源最短路径(标准版) - [x]
11.5
【模板】可持久化线段树 (主席树) - [x]
11.5
splay - [ ]
11.5
树剖 - [x]
11.5
【模板】AC自动机(简单版) - [x]
11.6
【模板】AC自动机(加强版) - [ ]
11.6
【模板】负环 - [ ]
11.6
【模板】缩点 - [ ]
11.6
【模板】割点(割顶) - [ ]
11.7
【模板】ST表 - [x]
11.7
【模板】manacher算法 - [ ]
11.7
【模板】线性基 - [ ]
11.7
【模板】【模板】乘法逆元 - [ ]
11.8
【模板】Treap - [ ]
11.9
【模板】高斯消元法 - [ ]
11.9
【模板】字符串哈希 - [ ]
11.10
【模板】多项式乘法(FFT) - [ ]
11.10
【模板】三维偏序(陌上花开) - [ ]
11.10
【模板】Link Cut Tree (动态树) - [ ] 各种线性筛
再有就是配置,这几天就用noip考场配置了.
(global-set-key [f9] 'compile-file)
(global-set-key (kbd "C-a") 'mark-whole-buffer)
(global-set-key (kbd "C-z") 'undo)
(global-set-key (kbd "RET") 'newline-and-indent)
(defun compile-file()(interactive)
(compile(format "g++ -o %s %s -lm -Wall"
(file-name-sans-extension(buffer-name))(buffer-name))))
(setq kill-ring-max 200)
(setq default-cursor-type 'bar)
(setq default-tab-width 4)
(setq c-default-style "awk")
(set-background-color "gray15")
(set-foreground-color "gray")
;;好长啊...
;;没有透明好丑啊...
还有真题,对每一年的真题都回顾一下,把握一下每道题的难度.
这个工作一定是要做的.
还有注意事项:
数组开大了或者开小了,空间一定要算好,最好留30mb防止意外,卡着空间是一件很危险的事情.还有注意诸如离散化,链式前向星或者一些要开两倍的数组的一定要注意.
要开longlong
的一定开longlong
,注意可能题目给你的数字不会炸int,但是结果很有可能爆longlong
,空间时间允许尽量都开longlong
n和m写反之类的事情不能再发生了.还有定义k的为某个输入的变量的时候就不能用k作为循环变量了.
很多个if
一定要搞清楚逻辑关系,最好几个if
并列都用else
多组数据的时候memset一个很大很大的数组,可能会TLE.
在bfs的时候防止越到负界,应该先判负界再调用数组.
看题要注意题目是1下标开始还是0下标,是0下标输入的时候一定要加一,输出的时候也一定要修改.
noip考试是不开o2的,所以慎用stl.
最后确保程序没什么大问题测大数据的时候,不开O2测一次,开O2测一次,以防不开O2数组越界不会报错,最好不要单纯通过大数据来判断有没有越界.
检查输入输出文件有没有出错,删掉注释的斜线之后要编译确保无误,交卷之前5分钟不答题.文件名有没有一一对应,字母有没有输错,文件夹和cpp名字有没有写错,是否子文件夹内外都有一份程序.
读入量过大的时候自己写一份读入优化,确保要读longlong的时候读入优化里写得longlong,有负数的时候读入优化里判了负数,读入优化里的x,sign一定要赋初值.
检查所有在函数里定义的变量有没有赋初值,多组数据是否还有变量没有清空.
注意观察题面里是不是有负边权,是不是有重边或者自环,有的话一定要严谨地分析一下对自己的程序有没有影响.
写完一道题之后自己造数据hack自己(特别是贪心),发现错误不要慌乱,想办法补救,确保写了的分都拿到.
程序出现段错误的时候,用cerr
或者cout<<endl
输出中间变量判断在什么地方RE的.
最好写一个函数就检查一下有没有写错,写完一个检查一个花费的时间远比写完全部再来调试要轻松得多.
一道题最好写完,或者完成一档部分分再写下一题,不要觉得这题我可能是对的,可能可以写出来.不要以为你之后会有时间写完你之前没写完的代码,考试的时候越开始的时候越清醒,开始写不出来的东西到之后很可能也写不出来,做好这题只有这么多分的心理准备.
打代码的时候注意力一定高度集中在构思程序上,看题和推倒的时候一定高度集中在构思算法上,不要被其他因素所干扰,不要想考完之后会发生的事情,不要总是自己和自己对话.
调试完代码之后一定要删掉或者注释掉自己的调试语句,为了调试方便修改的循环范围,输出范围,断点,一律也要改过来.
连个小于1e9的数字相乘一定要在之前乘以1ll,有的时候有可能忘记.要取模的地方一定要仔细检查有没有取模,加法之后取模常数太大可以写手写取模.
dp转移的时候注意边界条件,第0行0列的数据往往容易忽视,i从什么开始到什么,j从什么开始到什么,k从什么开始到什么结束,这些都是马虎不得的.还有转移顺序,有的时候错误的顺序也可以过样例.
noiLinux的默认密码是123456,防止像去年一样开考打不开电脑.
配置打错的时候一定不能慌乱,不能上战场就乱了阵脚,把调背景颜色的那句话移动位置,找出配置出错的一行.哪一行错了,之后的配置就会跟着不出来,可以通过这种方法查错,5min一定要搞定(考前配置要默十遍).
最好少喝水,上厕所容易分神,特别是排队的时候会关注前一个人有没有回来.有感觉了马上举手,不要等到憋的时候再举手,通常没有十分钟是轮不到的.
早上吃东西不要吃太冷的,也不要吃太多,防止拉肚子什么的.
注意一些库里的关键字,一定避免使用,即使没有调用也不使用.,以防意外.
如果通过达标找规律发现了规律,一定要想想是不是小数据也是对的.
涉及到double比较大小判断是否为0的时候设eps,涉及到斜率的时候要特判斜率不存在的情况,如果斜率非常大或者非常小,很容易掉精度.所以还是尽量避免使用实数.
注意不要在终端或者eshell里粘贴(输出)很大的数据,用gedit打开大数据的时候一定确保每行的数据量不大,emacs开的时候一定注意翻页不要太快了,否则电脑死机就完蛋了.
fa(并查集/倍增),vis(最短路/判段是否到过),f(dp和f),a,b,x,u,q(队列和询问数)这些变量名不要用着用着就混了.
多个dfs的时候注意每个dfs是不是调用到别的dfs去了.
maxn和maxm不要搞混了.
树链剖分不要写成随机剖分,倍增的循环倒序的要倒序,从0开始的要从0开始,从1开始的要从1开始,tarjan求强连通分量(割点/桥/边双联通分量)的时候分清楚low,dfn,vis.点分治要注意不要写成随机分治了.
set要注意是开set还是multiset,这两个常数巨大,要慎用.
lower_bound和upper_bound一个是返回第一个大于等于它的位置,一个是返回第一个大于它的位置.multiset的erase某个点的时候,要erase那个迭代器所在的点,不能erase这个值,多组数据要clear,map和vector也一样.map还要注意if(Map.find()!=Map.end())
来判断元素在不在map里,否则只要用数组的形式就默认插入insert.结构体unique的时候要重载==号.
整数除法得到浮点数要加(double)
或者1.0*
.stl的size()
函数都是返回的unsigned long long
,和int加减法取max要注意转成整型.
先花5min打配置,5min打include,freopen,建文件夹.20分钟浏览全部的题.30min写完所有的暴力,留着对拍/保底.
如果电脑坏了或者电脑死机了蓝屏了黑屏了,赶紧举手换电脑,像什么都没有发生一样,到新电脑以后,快速写好配置,快速把之前的打好的代码还原,打过一遍的东西很快就可以还原.主要是心态不能乱,要让意外的伤害降到最小.
写到一半发现思路错了,赶紧停下来仔细思考十分钟,确定自己的做法完全错误之后,再想10分钟,如果没有新的思路,赶紧弃掉打别的部分分.
网络流的cnt记得初始值为1,当前弧优化要加取地址符.
思路遇到瓶颈就想象noip往年的那些考法,都是把简单的东西考出花样.想一些常见的套路,例如
图论:可不可以最短路,可不可以最小生成树,可不可以kruscal重构树,网络流,和二分图有没有关联,求割点求联通分量是否可做,是否可以直接并查集,或者去年逛公园一样记搜,dag也许topo排序可以解决.
树上就要想:树上差分,倍增,lca.没办法了就想:树剖,点分,主席树.如果还是没有思路就想是不是可以转化成什么别的模型.
dp:LIS,最长公共字串可不可以直接套.是否可以前缀和前缀minmax.状态和范围很大,答案范围很小可以把状态答案反过来.是不是背包问题.
让最大值最小,最小值最大的题首先考虑二分答案.只要答案是随其他参数变化是单调的,就可以二分答案.
...
想到了再写吧...
NOIP前的模板复习和注意事项的更多相关文章
- NOIP前的模板
1.筛\(phi\) \(logn\)求少数\(phi\) inline int phi(R int x){ R int res=x,tmp=x; for(R int i=2;i*i<=x;i+ ...
- Noip前的大抱佛脚----Noip真题复习
Noip前的大抱佛脚----Noip真题复习 Tags: Noip前的大抱佛脚 Noip2010 题目不难,但是三个半小时的话要写四道题还是需要码力,不过按照现在的实力应该不出意外可以AK的. 机器翻 ...
- Noip前的大抱佛脚----字符串
目录 字符串 经验 用FFT求解字符串匹配问题 两(多)串DP时状态合并 最长公共子序列转LIS 位运算最大值 挂链哈希 哈希处理回文串 树哈希 字符串模板库 KMP 最小循环表示 Mancher A ...
- Noip前的大抱佛脚----数论
目录 数论 知识点 Exgcd 逆元 gcd 欧拉函数\(\varphi(x)\) CRT&EXCRT BSGS&EXBSGS FFT/NTT/MTT/FWT 组合公式 斯特林数 卡塔 ...
- Noip前的大抱佛脚----图论
目录 图论 知识点 二分图相关 DFS找环 并查集维护二分图 二分图匹配的不可行边 最小生成树相关 最短路树 最短路相关 负环 多源最短路 差分约束系统 01最短路 k短路 网络流 zkw费用流 做题 ...
- Noip前的大抱佛脚----数据结构
目录 数据结构 知识点及其应用 线段树 神奇标记 标记不下放 并查集 维护二分图 维护后继位置 堆 可并堆的可持久化 dsu on tree 方式&原理 适用范围 单调队列 尺取合法区间 模板 ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- NOIP前的一些计划
一些想法 距离NOIP2018只剩下一个星期的时间了,通过这几天在长郡的考试,渐渐感觉还有好多东西自己还不够熟练,也有些东西到现在还不会,现将NOIP前的一些计划列在这里,希望能在考前把他们全部完成吧 ...
- NOIP算法总结与复习
NOIP算法总结与复习 (看了看李总的蓝皮书,收获颇多,记下此文,以明志--) (一)数论 1.最大公约数,最小公倍数 2.筛法球素数 3.mod规律公式 4.排列组合数,错排 5.Catalan数 ...
随机推荐
- Java编程思想:擦除的补偿(数组泛型处,我有很多细节没有研究)
import sun.net.www.content.text.Generic; import java.lang.reflect.Array; import java.util.ArrayList; ...
- C# 与 JS 之间传值在 cshtml页面中
@{ string It = "sss"; ; } @functions{ string Mod = "ajssaioi"; public string Itm ...
- 洛谷P2001 硬币的面值 题解
题目链接:https://www.luogu.org/problemnew/show/P2001 这题的数据范围吓得我很慌. 分析: 这道题蒟蒻本来想用背包的,但是发现m太大,一写肯定炸,然后看到数据 ...
- 在dotnet core实现类似crontab的定时任务
前段需要在业务中实现某些时间段的简单定时任务,类似crontab的调度,因为业务会放在docker中,所以不想用直接用crontab,在网上搜了一下,发现一个开源的实现 Pomelo.AspNetCo ...
- Java SE API 8
百度云: 链接:http://pan.baidu.com/s/1pLMwiKz 密码:ep5f 官网网址:http://www.oracle.com/technetwork/java/javase/d ...
- CentOS7 修改PATH环境变量的方法
vim /etc/profile 添加: PATH=/root/.config/composer/vendor/bin:$PATH 保存,退出,运行: source /etc/profile 检查: ...
- jQuery 小测试
1.在div元素中,包含了一个<span>元素,通过has选择器获取<div>元素中的<span>元素的语法是? 提示使用has() 答案: $(div:has(s ...
- NDK jni mk文件 so文件 巴啦啦 初体验
概念JNI(Java Native Interface,Java本地接口),实现了Java和其他语言的交互(主要是C/C++),如:Java程序通过JNI调用C/C++编写的在Windows上运行的D ...
- UE4 打包详细流程
这两天试着把之前做的一个UE4项目在安卓机上运行下,于是乎有了下面的一个打包血泪史. 首先呢,肯定是下载好了UE的源码了,我用的是4.18. 安装步骤可以先参考下官方的教程http://api.unr ...
- Cell Phone Networ (树形dp-最小支配集)
目录 Cell Phone Networ (树形dp-最小支配集) 题意 思路 题解 Cell Phone Networ (树形dp-最小支配集) Farmer John has decided to ...