摘要: 动态规划 dp 方格取数类似于数字三角形,均可以使用动态规划直接秒杀. 但此题有 \(3\) 个方向:上、右、下.所以可以定义一个三维数组 dp 数组. 假设 \(f_{i, j, 1}\) 是从右、上方到达 \((i,j)\) 的和的最大值. 又有 \(f_{i, j, 0}\) 是从右、下方到达 阅读全文
posted @ 2024-10-23 22:33 Panda_LYL 阅读(220) 评论(0) 推荐(0)
摘要: 短路 这道题目中所含的运算符只有3个:与、或、非. 在与运算和或运算中有2个性质. 进行与运算时,若其中有一个值为0,则这个运算的结果就为0,即无需判断 另1个数是否是0或1. 进行或运算时,若其中有一个值为1,则这个运算的结果就为1,也无需判断 另一个数是否是0或1. 表达式树 根据短路的性质,可 阅读全文
posted @ 2024-10-23 22:31 Panda_LYL 阅读(117) 评论(0) 推荐(0)
摘要: 暴力 使用 $\Theta (n^2)$ 的时间复杂度来解决这题大约能拿到 $60pts$. 即枚举 $p$,再枚举每个选手的分数. 正解 桶是个好东西.我们开一个桶,记录当前分数有多少人. 然后计算获奖人数,分数从大到小进行枚举,直到当前人数 $\ge$ 获奖人数. 代码 #include<ios 阅读全文
posted @ 2024-10-23 22:28 Panda_LYL 阅读(77) 评论(0) 推荐(0)
摘要: 二进制 "优秀的拆分"如果存在,则代表 $n$ 的二进制最低位不是 $1$. $\because 2^0 = 1$ $\therefore$ 当 $n$ 的二进制最低位为 $1$ 时,不存在优秀的拆分. 即 $n$ 不是奇数. 上述条件判断完后,就可以从 $2$ 的 $30$ 次方开始模拟( int 阅读全文
posted @ 2024-10-23 22:27 Panda_LYL 阅读(138) 评论(0) 推荐(0)
摘要: 是模拟吗? 其实是的,虽然 $1 \le n \le 2 \times 10^5$,但是队列是个好东西. 我们定义一个结构体,来存放每一个块的信息,包括类型、起点、终点,将它们放入 队列当中,再使用基于广搜的思想,先处理,再合并,所以需要用到 $2$ 个队列. 注意点 数据中可能会有块的类型全是 $ 阅读全文
posted @ 2024-10-23 22:25 Panda_LYL 阅读(158) 评论(1) 推荐(1)
摘要: 模拟代码 #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n, p = 1, ans[1003]; // 没事干的ans数组 struct node{ string op, ad; }a[1 阅读全文
posted @ 2024-10-23 12:36 Panda_LYL 阅读(47) 评论(0) 推荐(0)
摘要: 正解 首先要注意 $2$ 点: 修改数组元素的值 会影响 接下来的操作. 对数组进行排序 不会影响 接下来的操作. 思路 直接扫一遍数组.假设排序后 $a_x$ 会在第 $p$ 位上. 将 $p$ 初始化为 $n$. 然后就开始找 $x$ 前后有多少个小于 $a_x$ 的值就行了. 时间复杂度:$\ 阅读全文
posted @ 2024-10-23 12:35 Panda_LYL 阅读(93) 评论(0) 推荐(0)
摘要: 结论题 题面概括 请在 $[l,r]$ 中找出一个数 $k$,使得 $n$ % $k$ 的值最大. 思路 当 $n \le 10^9$ 时,说明 $\Theta (n)$ 的算法已经结束了. 所以,接下来是结论推理. 当 $\left \lfloor \frac {l} {n} \right \rf 阅读全文
posted @ 2024-10-23 12:33 Panda_LYL 阅读(72) 评论(0) 推荐(0)
摘要: 最长上升子序列 根据题目中,每个坐标的横纵坐标均单调递增,所以明显可以使用最长上升子序列. 定义状态 $f_{i,p}$,表示正在节点 $i$ 时,还剩下 $p$ 次插入机会,所能达到的最大长度. 定义变量 $dis = |x_i-x_j|+|y_i-y_j|-1.$,表示 $i$ 到 $j$ 节点 阅读全文
posted @ 2024-10-23 12:10 Panda_LYL 阅读(87) 评论(0) 推荐(0)
摘要: 短路 我们可以使用一个变量来记录当前有没有短路. 设变量短路为 $dl$. 当 $dl$ 为 $0$ 时,说明当前值为 $0$,且运算符为 &. 当 $dl$ 为 $1$ 时,说明当前值为 $1$,且运算符为 |. 代码 重点讲完了,细节可以看代码以及注释. #include<iostream> # 阅读全文
posted @ 2024-10-23 12:09 Panda_LYL 阅读(44) 评论(0) 推荐(0)
摘要: 解方程 $题目中说,n = pq,ed = (p-1)(q-1)+1,m=n-ed+2.$ $把ed的式子展开,得到:$ $ed = p(q-1)-(q-1)+1$ $ed=pq-p-q+2$ $再把展开后的式子带入m中,得:$ $m=n-(pq-p-q+2)+2.$ $m=n-pq+p+q-2+2 阅读全文
posted @ 2024-10-23 12:08 Panda_LYL 阅读(90) 评论(0) 推荐(0)
摘要: 代码 #include<bits/stdc++.h> using namespace std; long long a, b, sum = 1; // 开long long int main() { scanf("%lld%lld", &a, &b); if (a == 0 || a == 1) { 阅读全文
posted @ 2024-10-23 12:06 Panda_LYL 阅读(155) 评论(0) 推荐(0)