07 2022 档案

摘要:图的基本概念 定义 图 (Graph) 是由若干给定的 顶点(vertex) 及连接两顶点的 边(edge) 所构成的图形。 功能 用来描述某些事物之间的某种特定关系 例如:顶点用于代表事物,而边用于表示两个事物间所具有某种关系。 组成 二元组:G=(V(G),E(G)) V(G):点 阅读全文
posted @ 2022-07-28 08:05 zhou_ziyi 阅读(30) 评论(0) 推荐(0) 编辑
摘要:并查集 并查集,用于处理一些不交集的合并及查询问题。 可以支持以下操作 建立集合 查找祖先 合并集合 建立并查集 没有什么好说的,对于每一个节点,一开始自己是一个独立的集合。 const int MAXN = 1e5 + 5; int fa[MAXN]; void Make() { for (int 阅读全文
posted @ 2022-07-28 08:05 zhou_ziyi 阅读(24) 评论(0) 推荐(0) 编辑
摘要:树状数组的概念 树状数组(Binary Indexed Tree(B.I.T))是一个区间查询和单点修改复杂度都为 logn 的数据结构。主要用于查询任意两点之间的所有元素之和。 引入 问题的提出 有一个一维数组,长度为 n。 对这个数组做两种操作: 修改,对第 ij 之间 阅读全文
posted @ 2022-07-28 08:04 zhou_ziyi 阅读(22) 评论(0) 推荐(0) 编辑
摘要:大致思路 首先,我们要转化问题,假设弹珠总价值为 sum,那么背包的容积则为 sum÷2 让你求给的这些弹珠是否恰好有一种选法能填满这个背包。但不过数据较水,朴素的多重背包也能过。 Code #include <cstdio> #include <iostream> #includ 阅读全文
posted @ 2022-07-27 21:31 zhou_ziyi 阅读(37) 评论(0) 推荐(0) 编辑
摘要:Solution 很显然是一道贪心的题目。 我们预处理得到每个点左边离它最近的加热炉的位置,然后可以用一个指针表示当前可照亮的点的位置,然后找到离它最远但可以照亮它。 后面的点的位置,然后一直这样暴力枚举下去,用 tot 进行记录,最后输出 tot 及答案。 但要注意在求的过程中判断无解情况 阅读全文
posted @ 2022-07-27 21:29 zhou_ziyi 阅读(20) 评论(0) 推荐(0) 编辑
摘要:题目分析 思路:模拟。 所有选手的的 ? 都以 + 来计算,算出每个选手的 AC 数,时间总和,最后以再排序即可。 Code #include <cstdio> #include <algorithm> #include <iostream> #include <cstring> using nam 阅读全文
posted @ 2022-07-27 21:29 zhou_ziyi 阅读(31) 评论(0) 推荐(0) 编辑
摘要:思路 好像还没有人写三分,那我就来水一篇三分的题解。 我们可以选择三分平均高度,通过 check 函数得到对应的最小代价,我将在代码中给出详细的注释。 Code #include <cstdio> #include <iostream> #define int long long using nam 阅读全文
posted @ 2022-07-27 21:28 zhou_ziyi 阅读(21) 评论(0) 推荐(0) 编辑
摘要:思路 很显然这是一道 dp。 定义状态 dpi,j 表示 i 到 j 吃到的最大蛋糕面积。 由于是一个环,所以我们需要开两倍的空间,将它转化为链。 注意开 long long。 Code #include <cstdio> #include <iostream> #include <cst 阅读全文
posted @ 2022-07-27 21:27 zhou_ziyi 阅读(38) 评论(0) 推荐(0) 编辑
摘要:思路 求最小值,很有可能是二分,我们再看数据范围,就应该往这方面想。 其实这道题最坑的还是 check, 是真的不好想。 我们不难写出一个 Θ(n2) 的 check。 bool check(int x) { int sum = 0; for (int i = 1; i <= n; 阅读全文
posted @ 2022-07-27 21:26 zhou_ziyi 阅读(24) 评论(0) 推荐(0) 编辑
摘要:思路 看到这道题,我首先想到求到数组 a 的和 s1,和数组 b 的和 s2。 如果 s1>s2, 那就不可能让两个数组完全相同。 但是样例就已经把这种方法否定了。 但是我们不难发现: 若 a 数组中的这个值小于 b 数组中的这个值,则增加 a 数组中的数字。如果 阅读全文
posted @ 2022-07-27 21:25 zhou_ziyi 阅读(19) 评论(0) 推荐(0) 编辑
摘要:思路 我们可以将这一个矩阵转化为一个一维数组。 之后输入的 n 个数中,有相同的,就打上标记。 由于矩阵是 3 * 3 的,所以我们可以用 Θ(1) 的时间复杂度进行判断。 Code #include <cstdio> const int MAXN = 15; int n; int a 阅读全文
posted @ 2022-07-27 21:24 zhou_ziyi 阅读(40) 评论(0) 推荐(0) 编辑
摘要:思路 这只是一道普通的模拟题…… 这道题中无解的情况有两种: 不是一位数并且首位为 0。 每一位上为两个不同的值。 除此之外,我们要找到最小的 好数, 就应该把首位赋值为 1, 其余赋值为 0。 Code #include <cstdio> #include <cstring> using name 阅读全文
posted @ 2022-07-27 21:22 zhou_ziyi 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目大意: 给出一个分数 ab,分解为多个分子为 1 的分数和。 要求分数的个数尽量的少,在数量相同的情况下保证最小的分数最大,且每个分数互不相同。 529=16+1174 迭代加深搜索: 迭代加深搜索可以 阅读全文
posted @ 2022-07-27 21:21 zhou_ziyi 阅读(47) 评论(0) 推荐(0) 编辑
摘要:Solution Code 阅读全文
posted @ 2022-07-27 21:08 zhou_ziyi 阅读(9) 评论(0) 推荐(0) 编辑
摘要:Link 阅读全文
posted @ 2022-07-27 14:02 zhou_ziyi 阅读(16) 评论(0) 推荐(0) 编辑
摘要:定义 阅读全文
posted @ 2022-07-27 14:01 zhou_ziyi 阅读(19) 评论(0) 推荐(0) 编辑
摘要:定义 我们给定两个数组,ai 表示 i 的价值,bi表示选取 i 的代价。如果选取 i,定义 xi=1 否则 xi=0。每个物品只有选和不选的两种方案,求一个选择的方案使得 $R = \frac{\sum (a_i \cdot x_i)}{\sum(b_i 阅读全文
posted @ 2022-07-25 21:37 zhou_ziyi 阅读(302) 评论(0) 推荐(0) 编辑
摘要:题目大意 思路 Code 阅读全文
posted @ 2022-07-25 15:03 zhou_ziyi 阅读(18) 评论(0) 推荐(0) 编辑
摘要:Floyd Floyd 是最简单的一种求最短路的算法,用于计算任意两点间的最短路。其时间复杂度为 Θ(n3), 并且它适用于负权图。 算法描述: 初始化 若两点 uv 有一条边,则 disu,v=wu,v 否则将其赋值为极大值,一边用 0x3f3 阅读全文
posted @ 2022-07-23 16:18 zhou_ziyi 阅读(30) 评论(0) 推荐(0) 编辑
摘要:题目大意 第一行输入 n 代表有 n 个同学,m 代表卡车最多运的物品重量。 第二行输入 n 个数字 ai 表示第 i 个同学的行李总量。 每组数据为 n 个子问题:一定将第 i 个同学的行李放进卡车,而卡车还会有剩余空间,放上第 1i1 同学的 阅读全文
posted @ 2022-07-16 21:28 zhou_ziyi 阅读(30) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示