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$巨佬的催更私信于是来更了(原本准备咕掉的) 最开始的策略是准备总览题目, ...
随机推荐
- PAT——1045. 快速排序(25)
著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的N个互不相同的正整数的排列,请问有多 ...
- JS知识点整理(一)
前言 本文把平时的一些读书笔记和理解进行了整理归纳,包含一些易混淆.遗漏的知识点,也会配上一些例子,可能不是很完整,还会有点杂,但也许会有你需要的(目前先整理了一部分,笔记有点多,后续会持续更新). ...
- TCL-事务
一.含义事务:一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不执行二.特点(ACID)A 原子性:一个事务是不可再分割的整体,要么都执行要么都不执行C 一致性:一个事务可以使数据 ...
- Linux-- 查看文件 more与其它
more 翻页查看 用法:more 文件名 nl 显示行号打印(不常用) 1.不打印空白行行号:nl -b t 文件名 类似 cat -b 文件名 2.打印所有行行号:nl -b a 文件名 类似 c ...
- Java并发编程(七)终结线程
线程的状态 一个线程会有如下五个状态 1.新建:线程在被创建时会暂时处于这种状态,此时系统为线程分配资源并对其进行初始化 2.就绪:此时线程已经可以运行,只是系统没有为其分配CPU时间. 3.运行:系 ...
- pt-archiver数据归档
可以使用percona-toolkit包中的pt-archiver工具来进行历史数据归档 pt-archiver使用的场景: 1.清理线上过期数据. 2.清理过期数据,并把数据归档到本地归档表中,或者 ...
- Linux常用命令拾遗
查看端口对应的程序: netstat -nlap | grep 5004 输出: tcp 0 0 192.168.3.000:5004 192.118.201.00:50800 ESTABLISHED ...
- [译]C语言实现一个简易的Hash table(2)
上一章,简单介绍了Hash Table,并提出了本教程中要实现的几个Hash Table的方法,有search(a, k).insert(a, k, v)和delete(a, k),本章将介绍Hash ...
- net core mysql 组件记录
nuget 下 Pomelo.EntityFrameworkCore.MySql (据说是微软官方推荐) MySql.Data.EntityFrameworkCore (甲骨文出品) 使用方式等同于 ...
- mapreduce使用 left outer join 的几种方式
需求 数据: [主表]:存放在log.txt中 -------------------------------------------------------- 手机号码 品牌类型 登录时间 在线时长 ...