摘要: 设 fi 表示对于前 i 组,必定选第 i 个积木的最大可能高度,fi=maxfk+zi 然后一开始往数组中扔进 6 个不同面的积木,然后拍个序去除后效性即可(虽然本来就没有后效性)。 注意:位于下面的积木的长和宽必须严格大于位于上面的积木的长 阅读全文
posted @ 2025-02-02 15:23 wh2011 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 做法一:直接模拟 空间复杂度:O(106) // #define FILE_INPUT #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #d 阅读全文
posted @ 2025-02-02 15:01 wh2011 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 看到数据范围 n×m5×107 就可以猜出来状态肯定是 fi,j 的,然后用滚动数组优化,或者直接用类似于 01 背包的方法优化。 我们设 fi,j 表示,对于前 i 个数,已经找到了 j 个组,且第 阅读全文
posted @ 2025-02-02 13:31 wh2011 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 问题描述 有 N 个元团子(米团),按照大小升序排列。第 i 个元团子 (1iN) 的大小是 Ai。 给定两个元团子 AB,它们的大小分别是 ab ,你只有在 a 不超过 b 的一半时,才能通过将元团子 阅读全文
posted @ 2025-01-22 16:36 wh2011 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 二维区间 修改+查询 例题 题目是求 i=1nj=1mai,j 我们可以定义一个差分数组 di,j=ai,j+ai1,j1ai1,jai,j1 易知 \(a_{i,j}=\s 阅读全文
posted @ 2025-01-03 21:19 wh2011 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 超级树状数组,就是用树状数组来进行区间修改+区间查询操作的东西,好处是和线段树相比快了不少。 例题 首先先来复习一下普通的树状数组 int tree[MAXN]; int lowbit(int x) { return x & -x; } void update(int x, int d) { whi 阅读全文
posted @ 2025-01-01 18:55 wh2011 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 题目链接:Becoder or Luogu 首先我们可以先把点给缩一缩,把连续的正数点和连续的负数点分别缩成一个点,比如 1 2 3 -1 -1 1 2 这个东西我们就可以将其缩成 6 -2 3 我们可以发现,求前者的值等于求后者的值,我们就将原序列变为了正负交替的序列。 然后我们就可以开始反悔贪心 阅读全文
posted @ 2024-12-08 11:02 wh2011 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 题目链接 对于这道题,我们可以把 P1 改为 1,2,3,...,n 这样一个序列,让 P1 的数一一与新的序列映射,{3,2,1,4,5}{1,2,3,4,5} 然后我们把这个映射用于 P2,\(\{1,2,3,4,5\} 阅读全文
posted @ 2024-11-26 22:20 wh2011 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 题目链接 字典树的介绍 字典树也叫(Trie树),字典树有插入和查询两个操作,我们先假设我们已经插入了单词 be、fake、beef、face 这几个单词,那么我们可以建树。 当我们查询 be、fa、fAKe、fac 时,答案分别为:2,2,0,1。 字典树的插入 我们可以给树上的每个节点标 阅读全文
posted @ 2024-08-17 16:29 wh2011 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 如果一棵二叉树能“查找”,那么这棵树的每一个节点都有一个“键值”,这些节点都按照键值有序排列,这棵树就叫做二叉查找树(BST)。 BST 的性质 每个节点都有唯一的键值,而且可以比较大小。 每个节点的左儿子的键值小于自己的键值,自己的键值又小于右儿子的键值,最小键值的节点没有左儿子,最大键值节点没有 阅读全文
posted @ 2024-08-15 20:24 wh2011 阅读(9) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示