NOIP 口胡
因为没准备啥东西 这两天口胡一下近年 NOIP 的题
大概会一道不落?没什么很寄的考点主要是
2021
T1 报数
打一个 \(O(\log n)\) 查询 \(n\) 中是否有 \(7\),打一个类埃式筛筛掉所有倍数。然后可以 lower_bound 也可以直接记录下一个数是多少。
总时间复杂度小常数 \(O(n \log n)\)。
T2 数列
发现数据范围小,考虑直接 dp。由于一堆 \(2^a\) 时需要进位,我们设计状态 \(f(i,j,k,p)\) 为 当前到了 \(S\) 中的第 \(i\) 位,到了 \(a\) 中的第 \(j\) 位,\(S\) 的二进制表示下有 \(k\) 个 \(1\),同时该位需要向下一位进位 \(p\) 的情况下,所有乘积之和。
考虑枚举一个值 \(v\),一个出现次数 \(t\)。然后 \(f(i,j,k,p)\) 可以向 \(f(i+1,j+t,k+(t + p) \& 1, (t + p) / 2)\) 转移,系数是 \(v^t \times \binom{n-j}{t}\)。
最后统计答案时 \(k + \text{popcount}(p)\) 小于给定的 \(k\) 时能计入。
总时间复杂度 \(O(n^4m)\) 的。最好写成刷表的形式。或者记搜?
T3 方差 术劣
简单化柿子得到需要最小化 \(n\sum_{i=1}^na_i^2 - \left(\sum_{i=1}^na_i\right)^2\)。
你像这种有奇怪操作的题,他的套路就是通过一些变换(缀和/差分/邻位异或/特征异或)把操作转成正常操作。一般顺着试一遍大概就出来了。这题是差分。
发现操作就是交换差分的两项。
不是很会推式子,但总而言之最终需要让差分呈现单谷的情况。似乎打完爆搜能搜出来?
首先 sort 一下差分序列。从小到大考虑每个值该放在左边还是右边最优。
设 \(f(i,x)\) 为当前需要放第 \(i\) 个差分 \(d_i\),\(\sum_{i=1}^na_i = x\) 时的 \(\sum_{i=1}^na_i^2\) 最小值。考虑放在左右两侧的情况。放在左侧就是 \(f(i,x) + i\times d_i^2 + 2d_i\times x \to f(i+1,x+i\times d_i)\),右侧就是 \(f(i,x) +\left(\sum_{j=1}^id_i\right)^2\to f(i+1,x+ \sum_{j=1}^id_i)\)。哦我还能记录一下差分的和是吧
最后取 \(\min_{i=0}^{sum}(n \times f(n, i) - i^2)\) 就是答案。
发现一个事,这样是 \(O(n^2\times \max a_i)\) 的,会炸。但是由于 \(a_i\) 升序,差分中不为 \(0\) 的项是 \(\min\{\max a_i, n\}\) 的。删除无用状态后做到 \(O(n\times\max a_i\times \min\{\max a_i, n\} )\)。
T4 棋局
……
会 但是不想说也不想写
一类边暴力 二类边用并查集维护连续段和段端点 三类边用线段树合并 每个连通块维护连通块边上的棋子的黑白性和等级
跳了
2020
T1 排水系统
希望场上会写高精
不考虑高精的话直接拓扑排序维护 dp 即可。
我记得 noip 可以用 __int128 来着
T2 字符串匹配
反正我上来思考的方式是 \(O(26n + n\log n)\)。
首先记录前缀和后缀的每个位置中出现奇数次的字符的数量以及这个的前缀和。然后可以直接枚举 \(|AB|\) 的长度,每次往前蹦一格,看 \(C\) 里出现奇数次的字符的数量,查询有几个 \(A\) 满足条件,加入即可。
总时间复杂度似乎是 \(O(26n + n\log n)\) 的。
T3 移球游戏
不会。
会个 \(n=2\) 暴力。首先有一种操作是把一个栈 \(X\) 里给定的颜色提到最顶上。我们需要一个空栈和一个满栈。设给定的颜色个数为 \(x\),我们先把满栈里的 \(x\) 个元素扔到空栈里面,再依次将 \(X\) 弹空。如果当前弹出的是给定颜色则扔进原来满的栈里,反之扔进原来空的栈里。最后先把原来空的栈里的元素弹进 \(X\) 里,再把原来满的栈里的元素弹进 \(X\) 里,满栈复位,完成。
这样也能把颜色提到最底下。总操作数是 \(2n + 2x\) 的。
然后对颜色分治。首先将 \(\le mid\) 的颜色置成 \(1\),其他颜色置成 \(0\)。把一个颜色提出来后分治即可。
总操作次数约为 60w 次。可以通过此题。
T4 微信步数
第一个观察是直接枚举点来移动的复杂度绝对炸掉。考虑每次操作后能接着移动的点都是一个 \(k\) 位超立方体,维护这玩意就行。
第二个观察是第一轮过后每一轮只要能结束那么对超立方体边界的减少量是相似的。可以列出式子求和。
我们设能走满 \(k\) 轮,求和得到的结果是 \(\sum_{i=1}^n \sum_{x=0}^k f(x)\)。\(f(x)\) 是个 \(i + 1\) 次多项式,系数可以直接插出来。
拉插:\(f(x) = \sum_{i=1}^n f(x_i) \prod_{j\neq i}\frac{x - x_j}{x_i - x_j}\)。
然后我们就只需要做一下 \(i\) 次方前缀和了。暴力即可。或者也可以伯努利数做,但这就不是 NOIp 而是 noip 了。
2019
?您在期待什么
2019 年没有 NOIp
2018
D1T1 铺设道路
好吧没想到最简单的做法
首先你这个肯定贪心地在填右边的时候填左边,因此假设 \(a_0 = 0\),我们有答案即为 \(\forall \ 1\le i\le n\ \land \ a_i > a_{i-1}, a_i - a_{i-1}\)。
D1T2 货币系统
背包。
贪心地 sort 一下,从小到大跑值域上的背包。如果已经被拼出来了就扔掉,反之不扔。
D1T3 赛道修建
听说很厉害的贪心,为什么我看着像 sb 题?
首先二分。然后把孩子里的链拼合。由于一条边只能被经过一次,所以选孩子里没被选的最长链传给父亲接着决策就行了。
每次看当前决策的链里有没有大于 \(\text {mid}\) 的和拼起来大于 \(\text{mid}\) 的。第一类直接删,第二类对最小值二分即可。
D2T1 旅行
不会 log 解法。
树上简单。把你的 vector sort 一遍就完了。
基环树上简单。枚举不走哪条边再 sort 你的 vector 就完了。
D2T2 填数游戏
是个打表找规律题。
首先打表可以发现 \(f(n,m) = f(m,n)\)。这点的构造是翻转每一位,矩形旋转 90°,左右翻转。
然后打表可以发现 \(f(1,m) = 2^m\)。这点……显然。
最后打表可以发现当 \(m > n + 1\) 时 \(f(n,m) = 3\times f(n,m-1)\)。证明不会(
之后去学学(
D2T3 保卫王国
听说是个 ddp?
NOIP 口胡的更多相关文章
- NOIP2016考前做题(口胡)记录
NOIP以前可能会持续更新 写在前面 NOIP好像马上就要到了,感觉在校内训练里面经常被虐有一种要滚粗的感觉(雾.不管是普及组还是提高组,我都参加了好几年了,结果一个省一都没有,今年如果还没有的话感觉 ...
- Topcoder口胡记 SRM 562 Div 1 ~ SRM 599 Div 1
据说做TC题有助于提高知识水平? :) 传送门:https://284914869.github.io/AEoj/index.html 转载请注明链接:http://www.cnblogs.com/B ...
- 口胡FFT现场(没准就听懂了)&&FFT学习笔记
前言(不想听的可以跳到下面) OK.蒟蒻又来口胡了. 自从ZJOI2019上Day的数论课上的多项式听到懵逼了,所以我就下定决心要学好多项式.感觉自己以前学的多项式都是假的. 但是一直在咕咕,现在是中 ...
- BZOJ 口胡记录
最近实在是懒的不想打代码...好像口胡也算一种训练,那就口胡把. BZOJ 2243 染色(树链剖分) 首先树链剖分,然后记录下每个区间的左右端点颜色和当前区间的颜色段.再对每个节点维护一个tag标记 ...
- Atcoder/Topcoder 口胡记录
Atcoder/Topcoder 理论 AC Atcoder的❌游戏示范 兴致勃勃地打开一场 AGC 看 A 题,先 WA 一发,然后花了一年时间 Fix. 看 B 题,啥玩意?这能求? 睡觉觉. e ...
- 关于有向图走“无限次”后求概率/期望的口胡/【题解】HNCPC2019H 有向图
关于有向图走"无限次"后求概率/期望的口胡/[题解]HNCPC2019H 有向图 全是口胡 假了不管 讨论的都是图\(G=(V,E),|V|=n,|E|=m\)上的情况 " ...
- 「口胡题解」「CF965D」Single-use Stones
目录 题目 口胡题解 题目 有许多的青蛙要过河,可惜的是,青蛙根本跳不过河,他们最远只能跳 \(L\) 单位长度,而河宽 \(W\) 单位长度. 在河面上有一些石头,距离 \(i\) 远的地方有 \( ...
- PKUSC 2022 口胡题解
\(PKUSC\ 2022\)口胡题解 为了更好的在考试中拿分,我准备学习基础日麻知识(为什么每年都考麻将 啊啊啊) 首先\(STO\)吉老师\(ORZ,\)真的学到了好多 观察标签发现,这套题覆盖知 ...
- 「线性基」学习笔记and乱口胡总结
还以为是什么非常高大上的东西花了1h不到就学好了 线性基 线性基可以在\(O(nlogx)\)的时间内计算出\(n\)个数的最大异或和(不需要相邻). 上述中\(x\)表示的最大的数. 如何实现 定义 ...
- 「浙大ACM」图森未来杯游记一篇以及简易口胡题解
前言 蒟蒻有参加了ACM比赛,这一次有适合HY和慕容宝宝大佬一起比的,他们好巨啊,把我带飞了. 又是窝掌机,QAQ,他们仗着自己巨,就欺负窝... 我又打了\(4\)个小时的代码,而且那个键盘太恶心了 ...
随机推荐
- 1.Ceph 基础篇 - 存储基础及架构介绍
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485232&idx=1&sn=ff0e93b9 ...
- KVM更改虚拟机默认存储路径
Virt默认的虚拟机存储路径是/var/lib/libvirt/images,如下图所示 接下来我们创建一个新的存储池,用来存储新建的虚拟机.存储池的名称为vm, 路径为/home/kvm/ (/ho ...
- Alertmanager配置概述
Alertmanager主要负责对Prometheus产生的告警进行统一处理,因此在Alertmanager配置中一般会包含以下几个主要部分: 全局配置(global):用于定义一些全局的公共参数,如 ...
- PHP全栈开发(五):PHP学习(2. echo 和 print 输出、数组、foreach循环、字符串)
在PHP中有两个基本的输出语句,就是echo 和 print 这两个东东有什么不同呢. echo 可以一次输出一个或者多个字符: echo "这是一个", "字符串,&q ...
- Codeforces Round #709 Div2
就ac了一题.QAQ掉分了我好难过. A题要画图推出来公式. B不会,现在没看到好懂得题解. C题,思路错了,给一些数,每天只能选其中一些,每个数不能被选超过k次,应该先将每天只能选一个得这个数先选上 ...
- 如何用Virtualbox搭建一个虚拟机
序言 各位好啊,我是会编程的蜗牛,作为java开发者,我们肯定会接触Linux服务器,除了使用云服务搭建Linux服务器外,我们一般也可以在自己的电脑上安装虚拟机来搭建Linux服务器用于各种功能的验 ...
- Mysql 用户远程登录数据库
其实这个技术不难.我只是站在巨人的肩膀上.梳理一下我遇见的问题. 方法有两种.修改当前用户的host 为 %.或者直接授权(推荐) 直接授权: # mysql -u root -proot // 登 ...
- 简读《ASP.NET Core技术内幕与项目实战》之3:配置
特别说明:1.本系列内容主要基于杨中科老师的书籍<ASP.NET Core技术内幕与项目实战>及配套的B站视频视频教程,同时会增加极少部分的小知识点2.本系列教程主要目的是提炼知识点,追求 ...
- 1.Django-Rest-Framework入门规范
一.WEB应用模式 1.前后端不分离 前后端混合开发(前后端不分离),返回的是html的内容,需要渲染页面,写模版 2.前后端分离 专注于后端接口,返回json.xml格式的数据 二.AP ...
- 创建base公共组件
公共模块 基础模块参照了vant的思路,使用bem命名规范.先创建一个命名空间,这个命名空间返回创建组件函数与生成命名方法.在创建组件函数中创建name与install属性用于注册vue组件 创建组件 ...