NOIP2018出征策
蒟蒻的风之旅人即将退役,现在分享一下退休前的故事
首先,经过这么多时间的划水训练,我成功从一个萌新变成了一个蒟蒻。我学会了各种奇怪玄学的算法,比如说昨天老师讲的NOIP第三题通用的算法,叫做XG算法,也就是通过各种不同的操作使得程序总体分数变高的很实用的算法,通俗地讲,就是瞎搞算法。
好了不说废话,开始我的表演
1. 不可能用朴素算法的,这辈子都不可能写朴素暴力的。
首先最重要的是背各种算法的优化模板。例如线段树可以写成ZKW线段树,也就是非递归线段树来优化,最短路可以套上CLZ最小环来优化,等等。但是有的时候需要我们需要对程序先反向优化,这样才能再对程序进行正面优化。例如我们这次长沙集训第七天的T1 Adjoin,推出来的最朴素的公式应该是这个:
\[
f[i]=\begin{cases}
0&i=1\\
1 & i=2\\
f[i-1]+f[i-2] &i\%2=0\\
f[i-1]+f[i-2]+(flag==1)?-2:2&i\%2=1
\end{cases}
\]
这样我们就会得到一个一维的DP公式。但是因为这个递推式没有一个普适的公式,因此不能进行矩阵优化,强行导致我少了20分。而只要我们设法把这个一维公式解压成三维的或者二维的,就可以推出其通向公式,AC这一道题。所以说我们不仅要正面优化,还要反向优化,总之要让程序获得最好的优化。
统计一下用得到的一部分优化。
普通模板 | 优化模板 |
---|---|
线段树\树状数组 | ZKW线段树 |
Dijkstra | Dijkstra堆优化 |
SPFA负环查询 | DFS形式的SPFA判断负环 |
Floyd查找图上最小环 | CLZ最小环 |
各种DP | 各种DP优化不再列举 |
蒟蒻的普通代码 | register、inline |
快速读入 | fread读入 |
快速输出 | fwrite输出 |
浮点数直接运算 | fast_math |
手写代码 |
2. 不可能写正解的,这辈子都不可能写正解的,要写朴素暴力,要强行骗分。
有一个OI界的明星,叫渣渣辉,他喜欢为OI打广告,我记得他说过的一句我最喜欢的广告词是这样讲的。
无暴力,不传奇,是兄弟就来写暴力
ZZH:这句话不是我说的
由此可见,暴力对于OI选手的重要性。暴力可以吸取地下三十米的氮磷钾,不对,三十分的部分分。拿不到三十分,也可以拿到五分的关怀分。CCF社区送温暖,你高兴吗?暴力最好的朋友叫画图。平常我们可以使用几何画板画标准图来找题目的规律,考试时可以用画板画非标准图来脑洞规律,但是无论怎样,最终目的都是用暴力的方法发现规律。几何画板可以在学校的电脑上直接拷贝下来,亲测不用注册可以直接使用。
实在没有思路,可以尝试一下模拟退火和爬山算法。
这是两种奇技淫巧的东西,这么点时间肯定学不来的。但是里面取随机数的思想还是很有用的。我们可以试着简化一下步骤。原本的模拟退火里,我们每次随机取一个解,当随机取的解比当前解更优时我们选取它;当随机数的解比当前题解差时我们roll一个随机数,并按照这个随机数判断到底取不取它。当然,这个随机数怎么求我是不会的,所以我们之间选择无限取随机数,当以随机数为答案的解更优时我们选它,否则我们去取下一个随机数。我们可以通过控制程序运行时间的函数控制整个过程,在脸白的基础上AC。
3. 其实信息竞赛是一门文科。
即使是生物地理也不存在信息技术这么大的记背量。OI界肯定有背诵鬼才,也肯定有靠背模板成功的传奇人物(比如我)。不管是什么算法的模板,多背一背总是有好处的。举个例子,长沙集训第八天的T1,很多人都被最小环这一个坎卡住。但是如果你会背CLZ最小环,那早就AC了这道题然后去做下一题了。
模板,至关重要。
背模板的过程也有助于理解代码。当然,背模板的时候要集中注意力,不能将分心去想一些诸如人体穴位图之类的自己的兴趣爱好和职业规划。要虔诚地对待模板,要相信它是有生命的。要像按摩师那样给模板愉快的游戏体验。
同时,就像语文要判断修辞手法,用模板的时候要判断模板类别。例如,我们可以用ST表做需要不断修改序列的值的最大值查找题,可以用Dijkstra来找负边权里的最短路,或者用CLZ最小环来查找一个无向图里的最大环。只要完成以上这几点,就一定可以在NOIP赛场上反向AK。
4. 一个优秀的总结
屏幕在深夜微微发亮
思想在那虚树路径上彷徨
平面的向量交错生长
织成 忧伤的网
剪枝剪去我们的疯狂
SPFA告诉我前途在何方
01背包装下了忧伤
笑颜 洋溢脸庞
键盘微凉 鼠标微凉 指尖流淌 代码千行 凸包周长 直径多长 一进考场 全都忘光
你在OJ上提交了千百遍 却依然不能卡进那时限
双手敲尽代码也敲尽岁月 只有我一人 写的题解 凋零在OJ里面
tarjan陪伴强联通分量 生成树完成后思路才闪光
欧拉跑过的七桥古塘 让你
心驰神往
队列进出图上的方向
线段树区间修改求出总量
可持久留下的迹象
我们 俯身欣赏
数论算法
图论算法
高斯费马
树上开花
线性规划
动态规划
时间爆炸
如何优化??????
我在OI中辗转了千百天
却不让我看AK最后一眼
我用空间换回超限的时间
随重新编译 测完样例 才发现漏洞满篇
原来CE 是因选错语言
其实爆0 只因忘写文件
如果标算太难请坚定信念
不如回头再看一眼题面
以那暴力模拟向正解吊唁
蒟蒻的蜕变 神犇出现 终将与Au擦肩
屏幕在深夜微微发亮 我心在考场
NOIP2018出征策的更多相关文章
- NOIP2018 20天训练
Day 0 2018.10.20 其实写的时候已经是Day 1了--(凌晨两点) 终于停课了,爽啊 get树状数组+线段树(延迟标记) 洛谷:提高组所有nlogn模板+每日一道搜索题(基本的图的遍历题 ...
- 增强学习(二)----- 马尔可夫决策过程MDP
1. 马尔可夫模型的几类子模型 大家应该还记得马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM).它们具有的一个共同性质就是 ...
- 上海SAP代理商 电子行业ERP系统 SAP金牌代理商达策
上海SAP代理商 电子行业ERP系统 SAP金牌代理商达策上海达策为电子行业企业提供了多样的ERP信息化管理系统.基于多营运中心的管理架构体系,构造了以供应链.生产管理.财务一体化为核心,协同HR.B ...
- 上海SAP代理商 服装行业ERP系统 达策SAP金牌代理商
上海SAP代理商 服装行业ERP系统 达策SAP金牌代理商上海达策公司的前身是上海InfoPower技术有限公司,该公司在中国ERP软件的销售和服务长达20年.在2005年4月上海达策正式成立,致成立 ...
- 【cs229-Lecture16】马尔可夫决策过程
之前讲了监督学习和无监督学习,今天主要讲“强化学习”. 马尔科夫决策过程:Markov Decision Process(MDP) 价值函数:value function 值迭代:value iter ...
- 帝吧出征FB:这李毅吧的“爆吧”文化是如何形成的
声明:本文不对爆吧行为及其涉及的事件进行是非判断,只探讨帝吧文化本身,欢迎拍砖.更正和补充. 一.“帝吧FB出征”事件梳理 继上次全网集体骂 “薯片”事件后,昨日(1月20日)晚7点,又发生了一次互联 ...
- [题解]NOIP2018(普及组)T1标题统计(title)
NOIP2018(普及组)T1标题统计(title) 题解 [代码(AC)] #include <iostream> #include <cstdio> #include &l ...
- [Reinforcement Learning] 马尔可夫决策过程
在介绍马尔可夫决策过程之前,我们先介绍下情节性任务和连续性任务以及马尔可夫性. 情节性任务 vs. 连续任务 情节性任务(Episodic Tasks),所有的任务可以被可以分解成一系列情节,可以看作 ...
- NOIP2018:The First Step
NOIP2018 RP=Ackermann(4,3) Day 0 日常不想做题也不知道要写什么qwq Day 1 接到$smy$巨佬的催更私信于是来更了(原本准备咕掉的) 最开始的策略是准备总览题目, ...
随机推荐
- JDK(三)JDK1.8源码分析【排序】mergeSort
归并排序是JDK对象数组的排序算法之一,接下来开始分析JDK的归并排序算法. /** * 将指定范围的对象数组按自然顺序升序排序 * * Src is the source array that st ...
- oracle安装程序异常终止解决办法
安装Oracle时总是会报程序异常终止,摸不着头脑,作为初学者一下就乱了分寸 工具/原料 Oracle软件包 win764位 方法/步骤 右击Oracle安装图标setup.exe,选 ...
- iOS:时间相关(18-10-13更)
先整理出时间相关的程序,以后有空再写成单例. 1.日历(NSCalendar) 2.时间格式() 3.时间戳 附录: 1.定时器 1.日历(NSCalendar) 1.想要获取 世纪.年.月.日.时. ...
- javascript用户密码加密,js密码加密
1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...
- MongoDB DBA 实践5-----复制集集群的数据同步和故障转移
(1)复制集集群的数据同步 1>主节点数据库test,在其中goods集合中加入一个文档. 2>在副节点中查看 注意:SECONDARY是不允许读写的,要使用rs.slaveOk()获得读 ...
- 执行mongod其他实例出现的问题
windows环境下,配置其他mongo实例,会出现一些问题 1.配置路径不对,执行bat文件时出现闪屏 根据提示创建C:\data\db\ 目录(因为mongodb默认在/data/db下创建数据库 ...
- case when 多个条件 以及case when 权重排序
1. case when 多个条件 语法: SELECT nickname,user_name,CASE WHEN user_rank = '5' THEN '经销商' WHEN user_rank ...
- 今天差点被断电搞死了,幸好IDE的备份救了我
今天早上,刚好改了几个PAS的源代码,在按CTRL+SHIFT+S(保存全部) 时,突然断电.有电后,发现这些保存的文件都变成乱码了............. DFM,PAS都是这样,幸好DELPHI ...
- jenkins+maven+docker集成java发布(二)#远程发布
jenkins+maven+docker集成java发布(一)中写了在Jenkins服务器自动部署业务,那需要将java项目部署到其他服务器怎么操作 这里需要依赖插件Publish Over SSH ...
- abc sort
c: #include<stdio.h>//从大到小 int main(){ int a, b, c; int x = 0; printf("input message:\n&q ...