WELCOME! SAI

You got to put the past behind you before you can move on.

  • undefined

    12 2021 档案

    摘要:题目描述: 有 N N N 个点 ( N < 100 ) (N<100) (N<100),给出每个点的直角系坐标,某些点之间有双向变相连,边权为坐标上两点的直线距离,现在给出你原点和目标点,让你求两点间的最短路(保留两位小数)。 样例输入: 5 0 0 2 0 2 2 0 2 3 1 5 1 2 1 阅读全文
    posted @ 2021-12-25 15:38 S·A·I 阅读(6) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 题目传送门 解题思路: 很板子的一道并查集题目,就是求这个由多个矩形组成的连通分量。 我们只需要判断这个矩形与先前互不联通的矩形是否联通,若联通,那么这块矩形相当于已经标记过了;若没有,那么这是一块崭新的矩形,最后看看有多少连通块即可。 这得一提的是判断矩形是否重合的方法: 首先我们得判 阅读全文
    posted @ 2021-12-24 20:52 S·A·I 阅读(14) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 题目传送门 解题思路: 根据数据范围以及题目中提到的合并等操作可以联想用并查集求解。 但是仔细想想,普通并查集只能判断某元素是否为统一集合的联通性问题,而题目中提到了“战舰数量”等权值性的问题,这种时候我们就要对并查集进行一些改变,成为可以处理权值的带权并查集。 带权并查集 必须要了解的 阅读全文
    posted @ 2021-12-19 14:04 S·A·I 阅读(13) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 题目传送门 解题思路: 遇到这种,在满足某种条件下找最值的问题:如这题,在一条能够从起始点到达目标点的路径中找到比值最小的最大值和最小值。我们往往会先枚举这些可行的路径,然后在路径里面找到最大值和最小值,这样子的话很难找到头绪。 我们可一个换个思路,枚举路径的权值的最小值的下限 i i 阅读全文
    posted @ 2021-12-18 15:51 S·A·I 阅读(11) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 题目传送门 解题思路: 一道在地图上连通块中判环的题目,我们可以考虑用 d f s dfs dfs 和 b f s bfs bfs 以及并查集这三种方法来判环。 深搜判环 由于环的本质上就类似于一条头尾相接的链,因此用“一路走到底” 的DFS是最合适不过的了。 我们每个点都尝试延伸,向与 阅读全文
    posted @ 2021-12-18 09:48 S·A·I 阅读(32) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 解题思路: 我们可以把每辆车试做一个点,那么这辆车所能互相攻击到的车辆之间就相当于存在一条边。那么很显然,只有互相不被所有车攻击到的车才能染成不同的颜色,那么也就是说同一连通块中的车辆都能被攻击到,也就是连通块的个数即为最大染色个数。 可以想到,只有具备攻击力的车辆才能进行扩展,才能加入 阅读全文
    posted @ 2021-12-17 21:25 S·A·I 阅读(17) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 解题思路: 首先需要有前置知识,在无向图中,联通分量表示最大联通子图中的节点个数。 然后我们考虑多种做法。 做法一: d f s + dfs+ dfs+ 邻接矩阵 #include <iostream> #include <cstring> using namespace std; in 阅读全文
    posted @ 2021-12-17 20:09 S·A·I 阅读(15) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 样例错了,输出为 27。 解题思路: 这一题就是一道裸的广搜,主要就是考虑路径输出。 我们需要一个 p r e i pre_i prei​ ,记录节点 i i i 在广搜中是由哪个节点转移的,然后最后用递归一步步倒推输出,即可处理路径问题。 输出路径函数: void print(int 阅读全文
    posted @ 2021-12-15 16:46 S·A·I 阅读(7) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 题目传送门 解题思路: 此题可以考虑使用记忆化搜索和动态规划来做。 记忆化搜索: 爆搜做法很容易可以想出来,但是时间会T,因此我们要加上记忆化优化搜索。 记忆化即为记下相同状态的最优解,当下一次搜索到的时候避免重复调用,以此来优化时间。 接下来就是深搜一波了。 #include <ios 阅读全文
    posted @ 2021-12-11 16:41 S·A·I 阅读(8) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 给定 N N N 种硬币,其中第 i i i 种硬币的面值为 a i a_i ai​,共有 b i b_i bi​ 个。从中选出若干个硬币,把面值相加,若结果为 s s s,则称“面值 s s s 能被拼成”。求 1 1 1 到 M M M 之间能被拼成的面值有多少个。 输入格式: 输入 阅读全文
    posted @ 2021-12-08 20:15 S·A·I 阅读(35) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 题目传送门 解题思路: 这里我们可以考虑回文串的两个性质: 回文串正序和倒叙是相同的。回文串以中选取分割点,左部分正序与右部分倒序是相同的 如:abbccbba 左部分正序:abbc 右部分正序:cbba 右部分倒叙:abbc 因此我们可以从中作文章,延伸出两种解法。 性质一解法: 可以 阅读全文
    posted @ 2021-12-08 17:21 S·A·I 阅读(20) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 题目传送门 解题思路: 此题可以考虑使用区间 d p dp dp 求解。 a i a_i ai​ 表示为目标状态中第 i i i 个位置的颜色。 设 f i , j f_{i,j} fi,j​ 表示在一个 ( i , j ) (i,j) (i,j) 的区间内,使这个区间达到目标颜色需要的 阅读全文
    posted @ 2021-12-07 20:01 S·A·I 阅读(21) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 题目传送门 解题思路: 根据题意知此题为多重背包裸题,即每个物品至多可以选 m m m 次的背包题目。 世上背包千千万,无一不是 01 01 01 背包的变体,多重背包亦是如此。 **若第 i i i 个物品的数目为 m i m_i mi​ ,我们可以将一种物品视作 m i m_i mi 阅读全文
    posted @ 2021-12-05 14:25 S·A·I 阅读(24) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 输入格式: 输入文件的第一行是一个整数 n ( 1 < = n < = 2000 ) n(1<=n<=2000) n(1<=n<=2000),表示数字个数;第二行一个整数 m ( 1 < = m < = n ) m(1<=m<=n) m(1<=m<=n),表示回合数,接下来一行有n个不超 阅读全文
    posted @ 2021-12-04 16:36 S·A·I 阅读(9) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 题目传送门 解题思路: 对于这个问题,我们显然能通过冒泡或选择排序来累计交换次数达到所求目的。但很显然, Θ ( n 2 ) \Theta(n^2) Θ(n2) 的排序无法承担 5 ∗ 1 0 5 5*10^5 5∗105 的数据,因此我们需要用到 Θ ( n l o g n ) \Th 阅读全文
    posted @ 2021-12-04 12:22 S·A·I 阅读(14) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 题目传送门 解题思路: 考虑动态规划结合贪心求解。 理解题目,我们可以把每个演讲的时间段视作一个区间,起始时间就是左端点 a a a,结束时间就是右端点 b b b ,那么问题就变成了将 n n n 个区间进行排列,两两区间不能相交,使符合要求的某些区间长度和最大。 遇到这种区间要求性的 阅读全文
    posted @ 2021-12-04 10:04 S·A·I 阅读(7) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 题目传送门 解题思路: 根据题意可得这道题就是在一棵树上选择若干个点,使得点权最大,其中选点满足两个条件: 选了父节点就不能选子节点选了子节点就不能选父节点 显然,题目的当务之急是如何在程序中存储一棵树,或者说存储一张图,这时候通俗的邻接矩阵就在空间上出现了缺陷,因此我们要用到链式前向星 阅读全文
    posted @ 2021-12-03 21:56 S·A·I 阅读(5) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 你的老家在河北农村。过年时,你回老家去拜年。你家有一片 N ∗ M N*M N∗M农田,将其看成一个 N ∗ M N*M N∗M的方格矩阵,有些方格是一片水域。你的农村伯伯听说你是学计算机的,给你出了一道题: 他问你:这片农田总共包含了多少个不存在水域的正方形农田。 两个正方形农田不同必 阅读全文
    posted @ 2021-12-03 19:38 S·A·I 阅读(12) 评论(0) 推荐(0) 编辑
    摘要:题目描述: 一个学校举行拔河比赛,所有人被分成了两组,每个人必须且只能够在其中一组,要求两个组的人数相差不能超过1,且两个组内所有人的体重加起来进可能地接近。 样例输入: 3 100 90 200 样例输出: 190 200 解题思路: 由于单个人最大重量比超过450,是一个极小的值,因此可以考虑将 阅读全文
    posted @ 2021-12-02 16:58 S·A·I 阅读(29) 评论(0) 推荐(0) 编辑

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