首页 > 其他分享 >寒假NOIP突破营笔记

寒假NOIP突破营笔记

时间:2024-02-02 21:24:25浏览次数:38  
标签:二分 cnt 终点 NOIP 短路 笔记 寒假 搜索 起点

Day1

枚举和搜索

某些题的正解其实就是暴力,但加了一些优化

三连击:暴力枚举即可

DNA序列: \(O(nk)\) 做法可以直接过;因为字符集大小只有 \(4\),也可以使用哈希转为四进制统计 \(O(n)\)

栅栏:二分答案+搜索+剪枝

k短路:

A*:启发式搜索的一种,定义起点 \(s\),终点 \(t\),从起点(初始状态)开始的距离函数 \(g(x)\),到终点(最终状态)的距离函数 \(h(x)\),以及每个点的估价函数 \(f(x)=g(x)+h(x)\)。

\(k\) 短路的前置:设 \(g(i)\) 为到达某点已经付出的代价,\(g(i)\) 为该点到终点的估计代价,则估价函数则为两者之和,放入优先队列中,将会先处理估计总代价最小的状态,以取得 \(k\) 短路。

实现(求 \(s\) 到 \(e\) 的第 \(k\) 短路):首先考虑怎么求 \(h(i)\),即预处理出图中每个点到终点 \(e\) 的估计代价(最短路径),我们都会求单起点多终点的最短路,多起点单终点的最短路可以转化为单起点多终点的最短路,只需要建一张反向图跑一遍最短路即可。得到反向图中的 \(dist(i)\) 即原图中的 \(h(i)\)。

下面是bfs部分,也就是 A* 的主体:用一个结构体(三元组)记录搜索的三个状态 {\(to,g(i),f(i)\)},根据估价函数的定义,重载运算符时应把 \(f(i)\) 作为第一关键字、\(g(i)\) 作为第二关键字从小到大入队(小根堆)或从大到小入队(大根堆)。以类似bfs的方法,从起点 \(s\) 开始搜索,以优先队列作为搜索队列。维护一个值 \(cnt\) 表示算出了起点到终点的第 \(cnt\) 短路,每当搜索到一次 \(e\) 点,就表明找到了一条最短路,更新 \(cnt\),当 \(cnt=k\) 时说明已经求出了第 \(k\) 短路,停止循环。

若在队列为空前均没有返回,说明不存在第 \(k\) 短路

水壶:进行多源 BFS,处理出每一个城市的管辖范围,接着求城市间的最小生成树,然后查询路径最大值。

骑士精神:A* 或 IDA*,也可以暴力搜索+剪枝。

分治:

分而治之
把一个问题分为两个或多个相似的子问题,再把每个子问题分为更小的子问题,直到分出的子问题可以简单地求解。

三维偏序:

前置知识:二维数点->定义:在一个平面中有若干个点,每次询问给你一个矩形,求出在矩形内的点的数量。做法:将点和矩形记录下来按 \(x\) 轴排序,然后用树状数组离线处理。

解决三维偏序可以用CDQ分治+树状数组

序列:dp+三维数点

三元上升子序列:

二分

割绳子:实数域上二分,用一个 check 计算按照长度 \(mid\) 切的绳子条数并和k比较,小了就更新r,大了就更新l

跳石头:原则是能保留就保留,二分答案求最大的最小值,check 函数算 \(mid\) 距离需要移动多少石头,再跟m比较进行调整

汽车拉力比赛:二分答案+人类智慧dfs/bfs。

包裹快递: 实数域二分答案+简单模拟,check 中算时间 \(<x_i\) 则更新 \(>y_i\) 则说明不可行,然后更新

自学:如果 \(b_i>a_i\) 那就完全自学,否则分类讨论:如果上课就能达到锁定 \(mid\) 那就全用来上课,否则先计算上课剩下自学,并统计学习的时间,跟 \(n \times m\) 比较并更新

拯救小云公主:不会

贪心

合并果子:直接用堆每次取最小值和次小值合并即可

最大乘积:用小学奥数的结论(一个数分成 \(2\) 和 \(3\) 的乘积可以保证分成的数最多)拆分,高精度求乘积

关押罪犯:好题,考虑二分答案最小的最大值,把边权大于 \(mid\) 的边“建成”一个无向图并判断他是否为二分图(染色法),并对 \(l,r\) 做出更新。

标签:二分,cnt,终点,NOIP,短路,笔记,寒假,搜索,起点
From: https://www.cnblogs.com/FinderHT/p/18004013

相关文章

  • noip2023 游记
    Day0看暑假的题解和笔记,写了两道小题,并用1h码了P1505[国家集训队]旅游,但是240行...下午帮hyl干活,想起来没写过树套树,于是写了一会,没写完@262620zzj用归并排序处理n=8的“机密文件”,难评开家长会,没被que,好事应该没人发现我妈发言稿是我写的吧晚上Co突然说不......
  • 2024.2.2寒假每日总结24
    算法题:1686.石子游戏VI-力扣(LeetCode)最最简单的超级马里奥训练过程fromnes_py.wrappersimportJoypadSpaceimportgym_super_mario_brosfromgym_super_mario_bros.actionsimportSIMPLE_MOVEMENTimporttimefrommatplotlibimportpyplotaspltfromstable_basel......
  • VITS课程学习笔记
    课程地址,https://www.bilibili.com/video/BV1wV411j7zG/?spm_id_from=333.788&vd_source=1eb6e5015a1f70daa97080d8ee786d5d VITS,VariationalInferencewithadversariallearningforend-to-endText-to-Speech论文,VITS:ConditionalVariationalAutoencoderwithAd......
  • 一些些数学的算法笔记
    好好好,直接进入正题(首先我们先要讲讲矩阵,矩阵你可以理解成\(n\timesm\)的一个二维数组,我们如下表示它:\[\begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,m}\\a_{2,1}&a_{2,2}&\cdots&a_{2,m}\\\vdots&\vdots&\ddots&\vdots\\a_{......
  • SpringBoot 多模块开发 笔记(一)
    多模块开发简易版dao层也可以说是Mapper层web层将controller放在这一层还有统一返回类型和自定义异常也在放在这里启动类也放在这里model层也就是数据对象比如常见的User类server层业务逻辑层或者说service层更好创建步骤创建一个正常的Spr......
  • STM32MP135开发板助力电力行业,IEC61850协议移植笔记
    1.概述IEC61850是变电站自动化系统(SAS)中通信系统和分散能源(DER)管理的国际标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明,在电力和储能系统中应用非常广泛。本文基于米尔MYD-YF13X开发板,在Linux系统上移植和使用开源的l......
  • STM32MP135开发板助力电力行业,IEC61850协议移植笔记
    1.概述IEC61850是变电站自动化系统(SAS)中通信系统和分散能源(DER)管理的国际标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明,在电力和储能系统中应用非常广泛。本文基于米尔MYD-YF13X开发板,在Linux系统上移植和使用开源的libI......
  • HTTP学习笔记
    教程:geektime透视HTTP协议【此教程时间:2019年】※,01、HTTP的前世今生HTTP协议始于三十年前蒂姆·伯纳斯-李的一篇论文(1989年)http/0.9:20世纪90年代初期的互联网世界非常简陋,计算机处理能力低,这一时期的HTTP被定义为0.9版,结构比较简单,为了便于服务器和客户端处理,它也......
  • Python学习笔记05
    3.4String(字符串)字符串特点:用单引号'或双引号"括起来,同时使用反斜杠\转义特殊字符。取字符串中的值:语法格式——变量[头下标:尾下标],左闭右开字符串索引值:Coding从前面索引012345从后面索引-6-5-4-3-2-1字符串输出示例代码str='Coding......
  • Python学习笔记04
    3.3运算符(以下假设变量a=10,变量b=21)【算数运算符】:运算符描述实例+加,两个对象相加a+b输出结果31-减,得到负数或是一个数减去另一个数a-b输出结果-11*乘,两个数相乘或是返回一个被重复若干次的字符串a*b输出结果210/除,x除......