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$巨佬的催更私信于是来更了(原本准备咕掉的) 最开始的策略是准备总览题目, ...
随机推荐
- 修改微软RDP远程桌面端口
远程桌面服务所使用的通信协议是Microsoft定义RDP(Remote Desktop Protocol)协议,RDP协议的TCP通信端口号是3389. 有时候为了安全起见,或者其他的需要,我们常需 ...
- 404 Note Found 队-需求报告
目录 组队后的团队项目的整体计划安排 项目logo及思维导图 项目logo 思维导图 产品思维导图 产品思维导图-引导 产品思维导图-后端数据处理.存储 产品思维导图-短信识别 产品思维导图-智能分析 ...
- eclipse删除的文件如何恢复。
1.如果不小心删除了单个文件或者文件夹. 鼠标点击上级目录 Ctrl+z就可以恢复了. 如果没有恢复,就右击项目,选择Resore from Local History 然后选择你所删除的文件,选择恢 ...
- mysql 全量备份与增量备份
全量备份[root@master adm]# cat DBfullBak.sh #!/bin/bash #use mysqldump to fully backup mysql data BakDir ...
- kafka restful api功能介绍与使用
前述 采用confluent kafka-rest proxy实现kafka restful service时候(具体参考上一篇笔记),通过http协议数据传输,需要注意的是采用了base64编码(或 ...
- 离线服务器下docker的部署与应用
一分钟内形成docker的模糊概念 网上很多文章避免将docker与虚拟机混为一谈,但对于初学者来说,完全可以将docker当做一种虚拟机技术,只需要牢牢记住一点最重要的区别:docker依赖于物理机 ...
- Oracle高级函数篇之递归查询start with connect by prior简单用法
路飞:" 把原来CSDN的博客转移到博客园咯!" 前段时间,自己负责的任务中刚好涉及到了组织关系的业务需求,自己用了oracle递归查询.下面简单来举个例子.在工作中我们经常会遇到 ...
- 用 map 表达互斥逻辑
在这个开发周期遇到这样一个需求: 管理员可以给子账号配置权限,有些权限存在互斥不可同时勾选,比如 审核员和代采.审核和采购员不可同时勾选 之前同事实现的方式如下: 这样每添加一个互斥关系就要遍历一次, ...
- React Native封装Toast与加载Loading组件
React Native开发封装Toast与加载Loading组件 在App开发中,我们避免不了使用的两个组件,一个Toast,一个网络加载Loading,在RN开发中,也是一样,React Nati ...
- 什么是设计模式?【php】
原文地址:https://www.cnblogs.com/zhuiluoyu/p/5818974.html 什么是设计模式? 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经 ...