清北学堂2019NOIP提高储备营DAY3】的更多相关文章

今天是钟神讲课,讲台上照旧摆满了冰红茶 目录时间到: $1. 动态规划 $2. 数位dp $3. 树形dp $4. 区间dp $5. 状压dp $6. 其它dp $1. 动态规划: ·以斐波那契数列为例,简单讲一下dp 1)对于斐波那契数列,有f0=0,f1=1,f2=1……fn=fn-1+fn-2 2)在上面的式子中,我们称f0=0为边界条件.推广到动态规划中,我们称不受其它元素的影响的元素为边界条件 3)在上面的式子中,我们称fn=fn-1+fn-2为转移方程 4)在上面的式子中,我们称f1…
今天是第二次培训的第一天,关于NOIP的基础算法,主要内容如下: $1.枚举 $2.搜索 $3.贪心 $1.枚举: •定义: 枚举又叫做穷举,是一种基础的算法,其思路主要是:从问题中有可能的解集中一一列举出可能的解,再使用各种奇奇怪怪的方式将正确的答案找出 (接下来做几道题玩玩咯) •例(1) 题目:一棵苹果树上长有n个苹果,每个苹果距离地面的高度用Ai来表示,小明的身高为h,试编一个程序求出小明最多能摘掉几个苹果. 分析:其实也么啥好分析的,就是将小明的身高和苹果的高度进行比较,如果苹果的高度…
今天只有一上午,讲的东西不多,这里就整理一下高精的东西,数论部分请见my blog 高精度: 先讲一讲进制问题:十进制的二进制表示:以10为例, 10的二进制表示为1010 10的三进制表示为101 将一个十进制的x转为k进制 要求把十进制的55转为三进制的表示 短除法如下: 3|55……1 3|18……0 3|6……0 3|2……2 0 将所有余数从下向上写出,55的三进制表示为2001 将一个k进制的数转成十进制的数 根据定义,k进制的xnxn-1xn-2……x0可以转为x·k^n+x·k^…
现在是晚上十二点半,好累(无奈脸),接着给各位——也是给自己,更新笔记吧~ 序列型状态划分: 经典例题:乘积最大(Luogu 1018) * 设有一个长度为 N 的数字串,要求选手使用 K 个乘号将它分成 K+1 个部分,找出一种分法,使得这 K+1 个部分的乘积能够为最大.* 例如,有一个数字串: 312,当 N=3, K=1 时会有以下两种分法:1 3×12=362 31×2=62* 符合题目要求的结果是: 31×2=62* 现在,请你帮助你的好朋友 XZ 设计一个程序,求得正确的答案.*…
今天是丁明朔老师的讲授~ 数据结构 绪论 下面是天天见的: 栈,队列: 堆: 并查集: 树状数组: 线段树: 平衡树: 下面是不常见的: 主席树: 树链剖分: 树套树: 下面是清北学堂课程表里的: ST表: LCA: HASH: 堆 支持两种操作: 1.插入一个值: 2.删除一个最大值(大根堆)或最小值(小根堆): 需要使用STL里的 priority_queue 或手写: LCA 结点 A 和结点 B 的最近公共祖先 LCA 及以上都是 A 和 B 的公共祖先: 注意 LCA 是尽局限于树上的…
清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描述 小B生活在一个很奇怪的国家里,这个国家的钱的面值只有可能是25,50,100的.小B最近在做社会实践,这次它选择在一个餐厅里干这件事情.但今天发生了一件有趣的事,这件事情是这个样子的,餐厅里大家都在排队买饭,粗心的打饭阿姨忘记要带零钱,并且所有排队打饭的人只带了一张钱. 具体地,第i个人带了一张…
清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算一次成绩.参与享优惠 描述 这是一道有背景的题目,小A也是一个有故事的人.但可惜的是这里纸张太小,小A无法把故事详细地说给大家听.可能小A自己也讲不清楚自己的故事,因为如果讲清了,也就没有这道题目了-- 小A的问题是这个样子,它找到了n份不同的工作,第i份工作每个月有ai的工资,每份工作需要小A每天…
快住手!这根本不是暴力! 刷了一整天的题就是了..上午三道题的画风还算挺正常,估计是第一天,给点水题做做算了.. rqy大佬AK了上午的比赛! 当时我t2暴力写挂,还以为需要用啥奇怪的算法,后来发现,只需要把t1的std改上两行就是t2的std.... t3是比较有水平的,与线段覆盖有关的题.正解思路二分+并查集,想法挺巧妙. (上午考试结束之后抽奖发明信片,看到屏幕上的158,我感觉幸福来得太突然了... (是不是我这两天炉石不开橙把非气都用干净了?233 人家清北学堂倒是挺客气,连U盘都发.…
今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1)   高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#include<algorithm>#include<cstdio>#include<cmath>#include<cstring>#include<cstdlib>using namespace std;char a1[1000],b1[1000];i…
讲课人更换成dms. 真的今天快把我们逼疯了.. 今天主攻数据结构, 基本上看完我博客能理解个大概把, 1.LCA 安利之前个人博客链接.之前自己学过QWQ. 2.st表.同上. 3.字符串哈希.同上. (貌似我好像都学过的样子.不过dms讲的是真的好,声情并茂) 4,并查集.同上. 5,树状数组,同上. 6,线段树,同上. 树状数组主要出现形式:逆序对,二位偏序,多个树状数组. 然后讲了一下午树状数组,线段树. 晚上讲splay... 到了晚上,然而并没有听懂什么,,只是看着dms打代码发呆,…
qbxt Day 4 afternoon --2020.1.20 济南 主讲:顾霆枫 目录一览 1.动态规划初步 2.记忆化搜索 3.递推式动态规划 4.记忆话搜索与递推式动态规划的转化 5.状态转移方程 总知识点:动态规划初步 一.动态规划初步: 1.定义:动态规划(Dynamic Programming)是是运筹学的一个分支,是求解决策过程最优化的数学方法. 动态规划被用于解决多阶段最优化决策问题.它的基本思路是将待解决的问题划分成多个阶段,每个阶段可能存在多种不同的状态.如果划分阶段后的问…
qbxt Day 4 morning --2020.1.20 济南 主讲:李奥 目录一览 1.一些符号与基本知识 2.拓展欧几里得,逆元与欧拉定理 3.线性筛法与积性函数(非重点) 总知识点:数论 一.一些符号和基本知识 1.数论常用符号 (1).(x,y):x与y的最大公因数,即gcd(x,y) (2).[x,y]:x与y的最小公倍数,即lcm(x,y) (3).x≡y(mod n):x与y在模n意义下同余 (4).Def:定义(define) (5).Thm:定理(theorem) (6).…
qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(kruskal算法,最短路径算法,拓扑排序) 总知识点:图论 一.kruskal算法 1.目的:求图的最小生成树 2.算法描述: 先将所有的边按照权值从小到大排序,相同权值的边顺序随意. 然后按顺序依次考虑将这些边加入最小生成树中: 若加入这条边后,当前已加入的边出现环,则不加入这条边. 若加入这条边后,当前已加入的边不出现环,则加入这条边. 3.代码实现: qsort(a+1,m,sizeof(edge),cm…
qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(图.图的存储方式.最小生成树的定义) 总知识点:图论 前言:众所周知,图论是一个非常重要的部分,而这次集训也可以算从头讲起了,所以说知识点很多,(不过好多还是比较简单的,毕竟是基础.....) 一.图(纯知识点,初赛常考) 1.构成:点.边(有向边,无向边) 无向边构成的图叫做无向图:有向边构成的图叫做有向图(又称双向图) 2.度:(1)在无向图中,与这个点相连的边的数量叫做这个点的度.(度数和=边数*2) (2…
qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 1.描述:线段树是一种分治的思想,用树形结构把一个大区间划分成小区间,它同时又是一棵二叉树. 2.概念名词定义: 区间(又称线段):线段树上的每一个节点对应于一个区间[a,b].(a,b为整数) 特殊说明:对于叶子节点,其对应的区间长度为1. For Example: (1)区间[1,10]对应的…
qbxt Day 1 morning --2020.1.17 济南 主讲:李佳实 目录一览 1.模拟和枚举 2.基础搜索算法(DFS.BFS.记忆化搜索)以及进阶搜索算法(纯靠自学) 总知识点:基础算法 一.模拟和枚举 1.算法描述:模拟,顾名思义就是按照题目的要求,它让你做什么,按照要求做. 2.例题一览: (1)[算法:枚举]寻找三位数 题目描述: 将1, 2, -, 9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1: 2: 3的比例,试求出所有满足条件的三位数. 分析: 首先…
qbxt Day 2 morning --2020.1.18 济南 主讲:李佳实 目录一览 1.并查集 2.堆 总知识点:基础数据结构 一.并查集 1.描述:并查集是一类十分常用的数据类型,它有着十分广泛的应用.在信息竞赛中,它主要执行的操作一般有三种. (1) 合并a,b两个元素所在的集合 Merge(a,b) (2)查找某个元素属于哪个集合 find(k) (3)查询两个元素是否属于同一集合 Query(a,b) 2.函数模板 (1)find int find(int x){ if(fa[x…
qbxt Day 1 afternoon --2020.1.17 济南 主讲:李佳实 目录一览 1.二分法 2.分治 3.贪心 总知识点:基础算法 一.二分法 (1)算法分析:二分法是一种暴力枚举的优化版,它可以使时间复杂度大大减少,从而达到优化的效果.它同时又是一种典型的分治思想的应用. (2)本质:把待求解问题分为两部分,每一部分分别求解. (3)解决问题:具有单调性质的题 (4)时间复杂度:若暴力枚举要O(N),那二分需要O(log N). (5)代码框架: 整数版: ----------…
全天动态规划入门到入坑... 一.总概: 动态规划是指解最优化问题的一类算法,考察方式灵活,也常是NOIP难题级别.先明确动态规划里的一些概念: 状态:可看做用动态规划求解问题时操作的对象. 边界条件:不需要.或不能由别的状态推出,且已知.或可算出的状态.递推时就用边界条件推出所有状态. 状态转移方程:由已知状态推出未知状态所用的方式.或原则等,依照它可用已知状态推出未知状态. 动态规划(DP)主要有:线性DP,数位DP,区间DP,树形DP,状压DP和其他DP(难度较高的还有数据结构优化DP,博…
简单数据结构: 一.二叉搜索树 1.前置技能: n/1+n/2+……+n/n=O(n log n)  (本天复杂度常涉及) 2.入门题引入: N<=100000. 这里多了一个删除的操作,因此要将所有的数都记录下来维护.一个个枚举很容易超时,这时就到了二叉搜索树显示本领的时候了. (注:子树节点的key值小/大于这个点,即子树中所有的节点的key值都小/大于这个点.同时不考虑有两个节点key值相等的情况) 实例: 1.查询最大/小值: 最大值自然就是往右儿子走啦. 核心代码(最小值): int…
一.枚举: 枚举是最简单最基础的算法,核心思想是将可能的结果都列举出来并判断是否是解. 优点:思维简单,帮助理解问题.找规律.没头绪时 缺点:时空复杂度较高,会有很多冗余的非解(简单的枚举几乎没有利用题目中任何隐藏的特殊性质). 运用枚举的话,首先要确认枚举的状态,或建立一个方便枚举的模型.由此知道枚举的优化主要在以下方面: 1.建立有效.巧妙的枚举模型,减少对非解的枚举. 2.如有多步操作,适当调整各步操作的顺序,使枚举高效化. 3.学习更强大的算法.数据结构.性质等等,用它们来优化枚举(滑稽…
.状态压缩dp: 对于这个我们引入二进制状态压缩,因为任何一个数都可以二进制表示,而其二进制表示上每一位都可以表示当前位置是否有元素,这就构成了状态压缩. 对于这个题,上下行&一下就行. 状压: 判断是否被攻击到:当前直接&,左移一下并&,右移一下并& 位运算的小技巧: 枚举s的子集: dp的优化: 看着就像单调队列QWQ.…
题目如下: (想要作弊的后几届神仙们我劝你们还是别黈了,这个题如果你们不会只能证明你们上错班了). 好,题目看完了,发现是一道大模拟(%你)题,于是我们按照题目说的做: #include<iostream> using namespace std; long long gcd(long long a,long long b)//gcd函数求最大公约数 { if (!b) return a;//b!=0 else return gcd(b,a%b); } int main() { long lo…
还有一天就结束了..QWQ 好快啊. 昨天没讲完的博弈论DP: 一个标准的博弈论dp,一般问的是是否先手赢. 博弈论最关键的问题:dp过程. 对于一个问题,一定有很多状态,每个状态可以转移到其他的一些状态.如果存在一个状态,且不能转移到其他状态,那么我们设这个状态为必败态,那么他相邻的能够转移到必败态的状态因为只有一种转移方式,那么一定为必胜态,(假设操作双方选手绝顶聪明,每一步都朝着最优状态走),如此这样交替下去,推到开始状态,就可以判断了. 怎么转换? 对于一个节点以及他所有子节点来讲,如果…
长者zhx来啦.. (又要送冰红茶了...) zhx一上来就讲动态规划...是不是要逼死人.... 动态规划: 最简单的例子:斐波那契数列.因为他是递推(通项公式不算)的,所以前面的已经确定的项不会影响后面的,满足无后效性,为最简单的动态规划. 3种写法:用算好的自己来算别人,或者用别人更新自己,记忆化搜索. 计算斐波那契数列f[n]=f[n-1]+f[n-2]. 如果用dfs来计算的话,在dfs函数里return dfs(n-1)+dfs(n-2); 由于没有记忆化,(没有把每一个阶段记录下来…
今天主攻图论. 对于这道题,30分做法是暴力搜索全部来判断是否有异样. 对于满分做法,利用带权并查集.? 又带我们串了一边LCA 安利个人LCA博客. spfa代码.原理:循环队列. 然后是floyd 个人博客: 原理:我们把所有边权拿出来拍个序,每次把边权最小的两个点放到同一个连通块中,运用并查集的思想,知道连接了n-1条边(n个点)满足树的性质,那么(游戏结束).适合处理无向图的最小生成树.对于有向图,算法为朱刘(毒瘤)算法. 博客传送门: 拓扑排序: 然后直接上题: 跑01最短路. 跑克鲁…
先水了一下昨天没讲完的贪心. 然后今天讲的分治. 安利自己水的二分与三分. 二分一定要满足有序.三分适合解决单峰函数问题. 第一道题借教室.运用差分和二分查找. 三分: P1731 [NOI1999]生日蛋糕 p1903国家集训队数颜色/维护队列 高精度除法: 还有一个lyd的秘技:高精度开方. 然后是矩阵乘法,矩阵快速幂,高斯消元. 然后是欧拉大作:欧拉筛(线性筛),埃拉托斯特尼筛法. 积性函数.莫比乌斯函数. 快速gcd算法. a*和ida*神仙算法(完全不懂. exgcd与逆元. 中国剩余…
上午7点半到的国防宾馆,8点开始的培训. 讲课人林永迪. 没错就是这个人: 他推荐的教辅:刘汝佳紫书,算法导论(也就看看..),刘汝佳白书 先讲模拟.(貌似就是看题论题. 然后贪心. 贪心没有固定的模板,他是一种思想... 一道例题链接(USACO 然后是线段覆盖和区间覆盖 会场安排问题,也是最经典线段覆盖的问题: 然后是经典区间覆盖问题: 喷水装置 [题目描述] 长 LL 米,宽 WW 米的草坪里装有 nn 个浇灌喷头.每个喷头都装在草坪中心线上(离两边各 W2W2 米).我们知道每个喷头的位…
今天主讲图论. 前言:图的定义:图G是一个有序二元组(V,E),其中V称为顶集(Vertices Set),E称为边集(Edges set),E与V不相交.它们亦可写成V(G)和E(G). 一.图的存储: 1.邻接矩阵: 2.邻接表: 数组模拟链表实现:记录每条边的终点.边权(如果有的话).同一起点的上一条边的编号,并记录以每个点为起点的最后一条边的编号. STL中的vector:记录以每个点为起点的边. 一些vector的细节: vector 本质就是 c++ 模板库帮我们实现好的可以变长的数…
今天主要讲一下数学的知识. 一.进制转换: 十进制到k进制:短除法:顺除至0,逆序取余. k进制转十进制:乘权相加. 常见进制:四进制(对应2位二进制).八进制(对应3位二进制).十六进制(对应4位二进制,A表示10,B表示11,...,F表示15) 常见进制在c++中的表示:二进制:前加0b:八进制:前加0:十六进制:前加0x. 小提示:只有十进制下的读数是“...几千几百...”的读法,其他进制都直接把数位上的数读出来就行辣. 二.高精度 常见数据类型的范围:int:[-232,232-1]…