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)代码框架: 整数版: ----------…
qbxt Day 1 morning 重点笔记 --2020.3.8 济南 主讲:钟皓曦 1 正数%负数==正数 负数%正数==负数 负数%负数==负数 a%b的答案的符号取决于a的符号. 2 快速幂:给定x,y,p,求xy%p,0<=x,y,p<=109 常规,(不够快): //O(i)算法,非快速幂 int ans=1; for(int i=1;i<=y;i++){ ans=(long long)ans*x%p; } int ans=1; for(int i=1:i<=y;i+…
目录 1. 题目 T1 魔力石 题目描述 Sol T2 和 题目描述 Sol T3 数对 题目描述 Sol T4 海豹王国 题目描述 Sol 考场策略 1. 题目 T1 魔力石 题目描述 题目描述 小明有一排魔力石,魔力石是一种蕴含魔力的石头,运用得当就能从中提取魔力. 魔力可以通过震荡的方式激发出来,这是提取魔力的唯一方法,而最好的震荡方式就是聚拢同一频率的魔力石让他们共振,同一频率的魔力石越多,激发过程越顺利. 每一个魔力石都有他们自己的频率 \(A_i\) ,而小明可以使用特别的方法对魔力…
目录 1. 题目 T1 双色球计数 题目描述 Sol 炼金术 题目描述 Sol T3 地铁大亨 题目描述 Sol T4 结束的派对 题目描述 Sol 算法 - 分治 1. 分治 2. 二分 3. 倍增 1. 题目 T1 双色球计数 题目描述 题目描述 小明有两种颜色的球,当然你可以想象成任意自己喜欢的颜色,但为了方便题目描述我们先暂定为红色和蓝色. 目前有 \(N\) 个红色球和 \(M\) 个蓝色球,红球被编号为 \(1 \sim N\),蓝球被编号为 \(N+1\sim N+M\),每个球都…
目录 1. 题目 T1 a 题目描述 Sol T2 b 题目描述 Sol T3 c 题目描述 Sol T4 d 题目描述 Sol 2. 算法 - 贪心 & 数学 1. 贪心 2. 数学 2.1 初等数论 2.2 组合数学 2.3 线性代数 2.4 简单几何 1. 题目 T1 a 题目描述 题目描述 给一个仅包含字符 . 和 * 的字符串.问是否存在 \(3\) 个 *,它们的位置构成等差数列. 输入格式 第一行一个整数 \(n\) 表示字符串长度. 第二行一个字符串. 输出格式 yes 或 no…
目录 1. 题目 T1 写字符串 题目描述 Sol T2 神奇的数 题目描述 Sol T3 珠子染色 题目描述 Sol T4 病毒扩散 题目描述 Sol 算法 -- 图论 1. 题目 T1 写字符串 题目描述 题目描述 你有一个字符串 \(S\) 和一个字符串 \(T\). 你把 \(S\) 中的字母按顺序一个一个写在黑板上,写完一遍后接着写第二遍.第三遍,以此类推 \(\cdots\) 当黑板上的字符串恰好是 \(T\) 时,你会停下,否则你会一直写下去.但是你有一次反悔的机会,即可以在某一个…
目录 1. 题目 T1 石头剪刀布 题目描述 Sol T2 铺地毯 题目描述 Sol T3 数列游戏 题目描述 Sol T4 数星星 题目描述 Sol 2. 算法 -- 动态规划 1. 概述 2. 线性 dp 3. 区间 dp 4. 分配 dp(背包) 1. 题目 T1 石头剪刀布 题目描述 题目描述 众所周知,石头剪刀布是一项相当考验智商的高级双人游戏.每轮游戏双方可以选择出石头.剪刀或布,胜负关系如下表给出: 玩家 A 玩家 B 胜者 石头 剪刀 A 石头 布 B 剪刀 布 A 石头 石头…
目录 1. 题目 T1 一 题目描述 Sol T2 二 题目描述 Sol T3 三 题目描述 Sol T4 四 题目描述 Sol 2. 算法 -- 数据结构 1. 题目 T1 一 题目描述 问题描述 你是能看到第一题的 friends 呢. --hja 众所周知,小葱同学擅长计算,尤其擅长计算组合数,但这个题和组合数没什么关系. 现在某公司有若干底层人员处理了若干订单,每个底层人员有一个中层管理作为他的上司,而每个中层管理也有一个高层管理作为他的上司.现在要进行年终评审,我们需要按业绩对所有公司…
今天是丁明朔老师的讲授~ 数据结构 绪论 下面是天天见的: 栈,队列: 堆: 并查集: 树状数组: 线段树: 平衡树: 下面是不常见的: 主席树: 树链剖分: 树套树: 下面是清北学堂课程表里的: 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…
今天是第二次培训的第一天,关于NOIP的基础算法,主要内容如下: $1.枚举 $2.搜索 $3.贪心 $1.枚举: •定义: 枚举又叫做穷举,是一种基础的算法,其思路主要是:从问题中有可能的解集中一一列举出可能的解,再使用各种奇奇怪怪的方式将正确的答案找出 (接下来做几道题玩玩咯) •例(1) 题目:一棵苹果树上长有n个苹果,每个苹果距离地面的高度用Ai来表示,小明的身高为h,试编一个程序求出小明最多能摘掉几个苹果. 分析:其实也么啥好分析的,就是将小明的身高和苹果的高度进行比较,如果苹果的高度…
今天是钟神讲课,讲台上照旧摆满了冰红茶 目录时间到: $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…
今天只有一上午,讲的东西不多,这里就整理一下高精的东西,数论部分请见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^…
全天动态规划入门到入坑... 一.总概: 动态规划是指解最优化问题的一类算法,考察方式灵活,也常是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.学习更强大的算法.数据结构.性质等等,用它们来优化枚举(滑稽…
讲课人更换成dms. 真的今天快把我们逼疯了.. 今天主攻数据结构, 基本上看完我博客能理解个大概把, 1.LCA 安利之前个人博客链接.之前自己学过QWQ. 2.st表.同上. 3.字符串哈希.同上. (貌似我好像都学过的样子.不过dms讲的是真的好,声情并茂) 4,并查集.同上. 5,树状数组,同上. 6,线段树,同上. 树状数组主要出现形式:逆序对,二位偏序,多个树状数组. 然后讲了一下午树状数组,线段树. 晚上讲splay... 到了晚上,然而并没有听懂什么,,只是看着dms打代码发呆,…
题目如下: (想要作弊的后几届神仙们我劝你们还是别黈了,这个题如果你们不会只能证明你们上错班了). 好,题目看完了,发现是一道大模拟(%你)题,于是我们按照题目说的做: #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); 由于没有记忆化,(没有把每一个阶段记录下来…