摘要:
问题引入 1275. 最大数 给定一个正整数数列 a1,a2,…,an,每一个数都在 0∼p−1 之间。 可以对这列数进行两种操作: 添加操作:向序列后添加一个数,序列长度变成 n+1;询问操作:询问这个序列中最后 L 个数中最大的数是多少。 程序运行的最开始,整数序列为空。 一共要对整数序列进行 阅读全文
摘要:
双端队列 1 介绍 首为都可插入和删除的队列为双端队列。 //添加头文件 #include<deque> //初始化定义 deque<int> q; 2 方法函数 push_back(x)/push_front(x) 把x压入后/前端back()/front() 访问(不删除)后/前端元素pop_b 阅读全文
摘要:
4973. 栈 给定一个栈,初始时栈为空。 你需要依次进行 n 个操作。 每个操作给定一个由小写字母构成的非空字符串,随后进行判断: 如果栈中已经包含该字符串,则将该字符串上升至栈顶,栈中其它元素的相对顺序保持不变。如果栈中还未包含该字符串,则将该字符串直接插入到栈的顶部。 所有操作完成后,请你按照 阅读全文
摘要:
前言 如果你不太了解dp(动态规划)是个什么东西,请回到上次dp。 链接:动态规划算法详解 数字三角形模型 问题 A: 【一本通基础DP基础模型】【例9.2】数字金字塔 【题目描述】 观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左 阅读全文
摘要:
什么是质数 质数也叫素数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 怎么判断质数 具体代码如下: bool primes(int x) { int cnt = 0;//计数,看看从1到x有多少个因数 for(int i = 1; i <= x; i++) { if(x 阅读全文
摘要:
树 在学习树形dp之前我们先了解一下什么是树。树简单来说就是连通的无环图。 树的存储 保存边信息的树的模板如下: a表示加边的起点,b表示加边的终点,c表示加边的权值 const int N = 1e4 + 10; int end[N], worth[N]; int next[N], head[N] 阅读全文
摘要:
4877. 最大价值 有一个容量为 n的背包和 m+1种物品,每种物品都有无限多个。 物品种类编号为 0∼m。 第 i 种物品的体积为 vi,价值为 wi。 在使用背包装入物品时,每种物品的限重如下: 第 00 种物品:重量忽略不计,在装入时没有重量限制。 第 1∼m种物品:第 i种物品的单个重量为 阅读全文
摘要:
前言 如果想看状态机的详解,点机这里:dp模型——状态机模型C++详解 1049. 大盗阿福 阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。 这条街上一共有 N家店铺,每家店中都有一些现金。 阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后 阅读全文
摘要:
状态机定义 状态机顾名思义跟状态有关系,但到底有什么关系呢。在实际解决的时候,通常把状态想成节点,状态的转换想成有向边的有向图,我们来举个例子。 相信大家都玩过类似枪战的游戏(没玩过的也听说过吧), 他的每一个人物基本都有几个状态:站立,蹲下,跑步和射击。这就可以构成一个简单的状态机图了。 状态机模 阅读全文
摘要:
1010. 拦截导弹 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。 但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。 某天,雷达捕捉到敌国的导弹来袭。 由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输 阅读全文