随笔分类 - 算法合集 / 动态规划
发表于 2024-10-09 20:42阅读:11评论:0推荐:0
摘要:C C 观察题意, 模拟样例, 首先 不能动, 因为相邻的 会改变, 然后 也是如此, 所以我们固定了 和 , 设两个指针 和 表示固定的位置, 那么此时在他们两个中间的数可以随便移动, 假设有 个空位
阅读全文 »
发表于 2024-10-06 12:09阅读:8评论:0推荐:0
摘要:问题引出: 给出 个点的树,求出分别以不同的 为根时,所有结点深度的和,根节点的深度为 。 首先我们有个自然的暴力思路, 也就是以每个节点为根节点做一遍 这样的复杂度是 级别的, 所以要进行优化 看下图: 我们首先假设每个节点具
阅读全文 »
发表于 2024-07-20 13:31阅读:12评论:0推荐:0
摘要:数位 大多使用高位计算的时候使用低位计算后的结果,从而做到优化效率 [ZJOI2010] 数字计数 题目描述 给定两个正整数 和 ,求在 中的所有整数中,每个数码各出现了多少次。 保证 。 求
阅读全文 »
发表于 2024-06-04 14:56阅读:58评论:0推荐:0
摘要:容斥原理的基本原理是根据集合之间的交来求集合之间的并,以下仅为容斥原理的部分相关习题 https://codeforces.com/problemset/problem/803/F 题意了然,即求出所有符合公共最小公约数为1的序列数目,那么考虑一种特殊情况:只有数字i,很明显他们的最小公约数一定是i
阅读全文 »
发表于 2024-05-26 11:32阅读:13评论:0推荐:0
摘要:见题:E - Digit Sum Divisible (atcoder.jp) P4127 [AHOI2009] 同类分布 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 考虑数位动规,设方程 为状态: :搜到了第 位(倒着枚举,也就是
阅读全文 »
发表于 2024-05-20 08:29阅读:14评论:0推荐:0
摘要:如何判断某个位置是不是LIS或者反LIS的数? 笔者是在前几天的abc354这一场的f题发现的,最长上升子序列很显然,我们在求的过程中,设 为以i位置结尾的最长上升序列的长度,然后求一边所有的最长长度即可,那么对于这种定义,我们考虑一个反定义,即: 为以j位置
阅读全文 »
发表于 2024-05-18 14:24阅读:14评论:0推荐:0
摘要:Coloring Brackets 一道区间DP好题 一开始以为有多种不同的括号匹配次序而导致自己一头大雾wuw,首先看到括号匹配就要想到用栈来求出每个括号对应的匹配项,对于一个区间来说,其左括号一定是具有与之对应的右括号存在时染色才有意义,所以我们要求出每个括号对应的位置
阅读全文 »
发表于 2024-05-17 16:07阅读:8评论:0推荐:0
摘要:先把例题模在这里,之后更新 P1272 重建道路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) P2014 [CTSC1997] 选课 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) P2015 二叉苹果树 - 洛谷 | 计算机科学教育新生态 (luogu.co
阅读全文 »
发表于 2024-05-10 16:09阅读:3评论:0推荐:0
摘要:P2015 二叉苹果树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 屮,一开始想当然的以为剪掉了其中一个边,其子树部分全部都会脱落,没想到剪掉一个边紧紧只是剪掉一个边,子树不会消失 很明显的,我们要考虑树形 ,因为剪掉哪条边是不确定的,那么暴力求的话,每条边都剪或不剪,时
阅读全文 »
发表于 2024-03-27 12:01阅读:11评论:0推荐:0
摘要:以为自己一辈子接触不到的算法,本来以为很高深,没想到是优雅的暴力,太绝妙了 对于多个区间查询,例如区间最大值等,我们考虑暴力,枚举区间 ,取最大值即可,时间复杂度 ,跑不起,所以我们借用数据结构,单调队列,树状数组等等,但是如果此时我们考虑优化暴露 首先我们这样
阅读全文 »
发表于 2024-02-06 16:36阅读:16评论:0推荐:0
摘要:首先是单调队列: 其实单调队列就是一种队列内的元素有单调性(单调递增或者单调递减)的队列,答案(也就是最优解)就存在队首,而队尾则是最后进队的元素。因为其单调性所以经常会被用来维护区间最值或者降低 的维数已达到降维来减少空间及时间的目的。 类似于滑动窗口等,单调队列具有时序性的储存区间最大值或
阅读全文 »
发表于 2024-01-28 07:35阅读:2评论:0推荐:0
摘要:区间DP具有两种形式的模板 这里以P1775 石子合并(弱化版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)为例 第一种是枚举区间长度然后进行动态规划: 枚举合并的区间然后进行递推: #include<bits/stdc++.h> using namespace std; co
阅读全文 »
发表于 2023-11-14 10:07阅读:16评论:0推荐:0
摘要:主要是在棋盘上的DP,棋盘上每个点的转移状态基本上都是已知的 //https://www.luogu.com.cn/problem/P1896 //压状dp //由于时间复杂度达到了指数级复杂度,所以搜索不能进行 //考虑动态规划,dp i,j,k表示 第i行,使用了j个国王,此时的状态是k //
阅读全文 »
发表于 2023-11-12 15:21阅读:27评论:0推荐:0
摘要:【动态规划】滚动数组的求解(C++) - 林、Zephyr - 博客园 (cnblogs.com) 【精选】滚动数组(简单说明)_儒rs的博客-CSDN博客 //https://www.luogu.com.cn/problem/P2679 /* # 定义状态 # 对于任意一个 0 <= i <= n
阅读全文 »
发表于 2023-11-11 13:16阅读:12评论:0推荐:0
摘要://http://ybt.ssoier.cn:8088/problem_show.php?pid=1302 #include<bits/stdc++.h> using namespace std; const int N=2e5+10; int dp[N][3][3],n,w[N],t; int m
阅读全文 »
发表于 2023-10-26 14:51阅读:19评论:0推荐:0
摘要:预计时间一个月,一天的量为1-2道左右,难度不均,黄-紫都有,后阶段紫 // https://www.luogu.com.cn/problem/P4141 // 对于任何一个物品对答案的贡献都是从1到n递推过去的,所以 // 只需要开一个相同的数组然后从头遍历一遍,把该物品对答案的贡献减去就可以了
阅读全文 »
发表于 2023-09-02 17:36阅读:50评论:0推荐:0
摘要:状态压缩也就是把多个状态都转译成一个状态,由于题目的题意就是需要一步一步递推也就是dp,但是常规的dp只能计算一个状态,无法满足多个状态,所以可以使用状态压缩. 将这多个状态划分为二进制形式:设有 个状态,那么所有的可能状态为 ,如果有4个状态, 表示只满足了第二个状态,
阅读全文 »
发表于 2023-07-30 23:27阅读:105评论:0推荐:0
摘要:# [蓝桥杯 2022 省 B] 李白打酒加强版 ## 题目描述 话说大诗人李白,一生好饮。幸好他从不开车。 一天,他提着酒壶,从家里出来,酒壶中有酒 斗。他边走边唱: > 无事街上走,提壶去打酒。 > 逢店加一倍,遇花喝一斗。 这一路上,他一共遇到店 次,遇到花 次。已知最
阅读全文 »
发表于 2023-06-17 18:29阅读:6评论:0推荐:0
摘要:弱化版:黑虎阿福: 题目描述 阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。 这条街上一共有 NNN 家店铺,每家店中都有一些现金。阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。 作为一向谨慎作案的大盗,阿福不愿意冒着被
阅读全文 »
发表于 2023-06-10 09:58阅读:29评论:0推荐:0
摘要:题目描述 阿福最近对回文串产生了非常浓厚的兴趣。 如果一个字符串从左往右看和从右往左看完全相同的话,那么就认为这个串是一个回文串。例如,abcaacba 是一个回文串,abcaaba 则不是一个回文串。 阿福现在强迫症发作,看到什么字符串都想要把它变成回文的。阿福可以通过切割字符串,使得切割完之后得
阅读全文 »