返回顶部

08 2020 档案

摘要:题意:有一张$H$x$W$的图,给你$M$个目标的位置,你可以在图中放置一枚炸弹,炸弹可以摧毁所在的那一行和一列,问最多可以摧毁多少目标. 题解:首先我们记录某一行和某一列目标最多的数目,用桶标记每个目标的位置,然后记录每一行和每一列的炸弹数,再去枚举每一行和每一列,将目标数等于最大值的存起来,最后 阅读全文
posted @ 2020-08-25 13:49 _Kolibri 阅读(400) 评论(3) 推荐(2)
摘要:题意:给你一张图,"."表示能走,"#表示不能走,步行可以向四周四个方向移动一个单位,使用魔法可以移动到周围$5$X$5$的空地,问能否从起点都早终点,并求最少使用多少次魔法. 题解:明显是用BFS,但是我们要能步行就步行,尽量少使用魔法,所以我们可以用deque来存状态,将步行的状态放在前面,魔法 阅读全文
posted @ 2020-08-25 13:39 _Kolibri 阅读(433) 评论(0) 推荐(1)
摘要:题意:给你$n$个点,每个点都有权值,现在要在这$n$个点中连一颗最小树,每两个点连一条边的边权为两个点的点权,现在还另外给了你几条边和边权,求最小权重. 题解:对于刚开始所给的$n$个点,假如不考虑后来给的边,仅用这些点来构造,那么最优解一定是最小点权的那个点和其他点连边,所以我们先把这样连边存起 阅读全文
posted @ 2020-08-22 00:50 _Kolibri 阅读(123) 评论(0) 推荐(0)
摘要:题意:给你一串括号,每次仅可以修改一个位置,问有多少位置仅修改一次后所有括号合法. 题解:我们用栈来将这串括号进行匹配,每成功匹配一对就将它们消去,因为题目要求仅修改一处使得所有括号合法,所以栈中最后一定会有两个括号剩余,并且这两个括号要么是$((\(要么是\)))\(,\))(\(是无论如何都不合 阅读全文
posted @ 2020-08-22 00:32 _Kolibri 阅读(96) 评论(0) 推荐(0)
摘要:题意:有$n$个熊小孩,绕着树转圈圈,编号$i$的小孩可以记住$a_{i,1}$和$a_{i,2}$两个小孩,这两个小孩是顺时针相邻的,但谁前谁后不一定.现在给你每个小孩的$a_{i,1}$,\(a_{i,2}\),要求还原序列. 题解:对于第$i$个小孩,我们去判断他的$a_{i,1}$和$a_{ 阅读全文
posted @ 2020-08-21 22:35 _Kolibri 阅读(143) 评论(0) 推荐(0)
摘要:题意:给你一个数$n$,问是否能有$k$个$2$次方的数构成,若满足,输出一种合法的情况. 题解:从高到低枚举二进制的每一位,求出$n$的二进制的$1$的位置放进优先队列中,因为$2$次方最小的值是$1$,并且只能拆分不能合并,所以判断一下是否满足,然后对于$2i$,我们可以拆分成$2$和$2^\( 阅读全文
posted @ 2020-08-21 22:18 _Kolibri 阅读(129) 评论(0) 推荐(0)
摘要:题意:有$n$个点,$m$条边,只有当你的智力值大于这条边的$w$才能走,问在花费不超过$k$的情况下,从$1$走到$n$的所需的最小智力值. 题解:这题比赛为什么没想出来呢?赛后看题解发现可以二分答案然后跑最短路来check,网上的题解全都是SPFA啊,我还是喜欢写dijkstra qwq. 代码 阅读全文
posted @ 2020-08-20 21:34 _Kolibri 阅读(248) 评论(0) 推荐(0)
摘要:题意:有$n$个人,每个人居住在某个节点,所有人都在节点$1$上班,下班后沿着最短路径回家,在回家途中心情可能会变差(心情只会变差不会变好),每个节点都有一个开心值,开心值等于所有经过时的好心情人数减去差心情人数,现在给你每个城市的开心值,问是否满足情况. 题解:这题真的好难想啊,假设第$i$个城市 阅读全文
posted @ 2020-08-20 20:40 _Kolibri 阅读(91) 评论(0) 推荐(0)
摘要:题意:给你一张图,对其染色,使得相连的点的颜色两两不同求,最少使用多少种颜色. 题解:首先,若$n=1$,只需要一种.然后我们再去判断是否是二分图,对于二分图,两种颜色就够了,若不是二分图,也就是可能存在奇环的情况,那么三种颜色铁够了.所以题目就转化成了判断是否是二分图. 代码: int n,m; 阅读全文
posted @ 2020-08-18 20:20 _Kolibri 阅读(157) 评论(0) 推荐(0)
摘要:题意:给你某个字符串的$n-1$个前缀和$n-1$个后缀,保证每个所给的前缀后缀长度从$[1,n-1]$都有,问你所给的子串是前缀还是后缀. 题解:这题最关键的是那两个长度为$n-1$的子串,我们只要判断哪个是前缀就行了,然后再遍历一遍所给的子串,用长度为$n-1$的前缀子串来判断是子串是前缀还是后 阅读全文
posted @ 2020-08-18 12:38 _Kolibri 阅读(105) 评论(0) 推荐(0)
摘要:题意:有$n$个话题,每次都必须选取不同的话题,且话题数必须是上次的两倍,第一次的话题数可以任意,问最多能选取多少话题数. 题解:我们首先用桶来记录不同话题的数量,因为只要求话题的数量,与话题是多少无关,所以我们可以开个新数组然后离散化一下,比如$mp[5]=6$可以离散化成$disc[1]=6$, 阅读全文
posted @ 2020-08-18 12:26 _Kolibri 阅读(102) 评论(0) 推荐(0)
摘要:题意:在$x$轴上有很多传送点和钻石,当位于传送点上时,可以传送到其他任意传送点(不记操作数),位于钻石上时可以吃掉它,每次可以移动一个单位,问最少多少次可以吃掉所有的钻石. 题解:对于某个位置上的钻石,我们可以从它左边的传送点走过来,或者从它右边的传送点走过来,又或者从上一个钻石的位置直接走过来, 阅读全文
posted @ 2020-08-14 12:24 _Kolibri 阅读(242) 评论(0) 推荐(0)
摘要:题意:给你一个字符串,可以交换两个字符的位置,问操作后能否在字符串中找到子串$"happiness"$,如果不能,输出交换的两个位置. 题解:这题其实用string中的find函数很是方便啊,假如字符串中不含子串,我们判断一下交换$1$和$2$位置的字符后是否含有子串,如果有就直接交换$1$和$3$ 阅读全文
posted @ 2020-08-14 12:13 _Kolibri 阅读(205) 评论(0) 推荐(0)
摘要:题意:有$n$个吃鸡玩家,在某个时间段给你他们每个人的杀敌数,判断数据是否合法,并输出每个人对应的杀敌情况. 题解:刚开始写的是直接暴力枚举,向后去找并且标记,然后存到vector最后输出,结果一直MLE,后来发现可以用双指针来搞.首先只要总杀敌数不大于$n-1$,那么就永远都是合法的,然后不难发现 阅读全文
posted @ 2020-08-14 11:54 _Kolibri 阅读(129) 评论(0) 推荐(0)
摘要:题意:有一$n$个数,从中找数构成相同的子集,要求子集元素个数为$k$,求构成子集个数最多的情况,输出子集(字典序最小). 题解:我们可以对子集的个数二分答案,首先用桶记录每个元素的个数,然后二分找最大值,check函数中直接枚举$[1,100000]$的个数,然后用$mid$去除,得到的$t$就是 阅读全文
posted @ 2020-08-14 01:13 _Kolibri 阅读(177) 评论(0) 推荐(0)
摘要:题意:有$[1,n]$这$n$个数,构造集合,集合中不能包含$u$和$v$,问最多能构造多少个集合. 题解:被这题卡了一整场.....以为是推公式,结果答案是暴搜? ​ 首先我们先用一个二维数组标记一下所有$u$和$v$,然后从$1$开始搜,如果$num>k$就表示一种情况搜完了,首先考虑不选,深搜 阅读全文
posted @ 2020-08-14 01:01 _Kolibri 阅读(147) 评论(0) 推荐(0)
摘要:题意:有一个$01$串,两个相邻的$0$可以变成一个$1$,两个相邻的$1$可以直接消除,问操作后的字符串. 题解:数组模拟栈直接撸,上代码吧. 代码: class Solution { public: /** * * @param str string字符串 初始字符串 * @return str 阅读全文
posted @ 2020-08-14 00:52 _Kolibri 阅读(141) 评论(0) 推荐(0)
摘要:题意:有一个$5$X$5$的$01$图,输出从左上角走到右下角的最短路径. 题解:基础的bfs,这里困难的是如何输出这个最短路径,我们可以用一个结构体来存点和路径,我们每次向外去拓展的时候,如果满足条件,那么就让这个点的路径继承上个点的路径,这样当我们走到右下角的时候,直接输出路劲然后return即 阅读全文
posted @ 2020-08-12 23:37 _Kolibri 阅读(130) 评论(0) 推荐(0)
摘要:题意:有一个三维的图,问能否从起点走到终点,若能,输出最小步数. 题解:应该是个bfs模板题,但是第一次写到三维图的题目,注意开三维数组存图,然后遍历方向的时候记得向z轴上下跑两个就行了. 代码: struct misaka{ int x,y,z; }e; int l,r,c; char s[100 阅读全文
posted @ 2020-08-12 23:28 _Kolibri 阅读(112) 评论(0) 推荐(0)
摘要:题意:对于某个序列,若$1\le i\le n$,$1\le j\le i$且$p_j>p_i$,或者$1\le i\le n$,$i<j \le n$且$p_j>p_i$,那么就可以在$i$和$j$之间连一条边,求有多少能够成环的长度为$n$的序列. 题解:对于长度为$n$的序列,也就是有$n$个 阅读全文
posted @ 2020-08-12 23:20 _Kolibri 阅读(209) 评论(0) 推荐(0)