03 2021 档案

摘要:题目链接 #题目大意 你可以在一棵数的边上填上$0~n-2$中的一个数,每个数只用一次,问树上任意两个不同点的mex(u, v)之和是多少?mex(u,v)代表两点之间的简单路径上没有出现的最小的非负整数。 #解题思路 对于任意一条路径,如果不包含权值为0的边,那么结果必定为0,所以我们从一条权值为 阅读全文
posted @ 2021-03-17 21:35 shuitiangong 阅读(61) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 有n个人,两局比赛,每场比赛每个人的得分构成一个排列,现在一个人两场的得分是x与y,问这个人最少/最多排第几名,相同分数的人并列,并且询问的人在相同分数的人中排最后。 #解题思路 先考虑最靠后的排名,如果想让这个人排名尽可能的靠后,那么就让尽可能多的人排在他的前面~~(废话)~ 阅读全文
posted @ 2021-03-17 21:07 shuitiangong 阅读(68) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 给n个数,你可以使每个数的值减小(最小减到1),问把这n个数改成没有左右两个数都大于中间数的情况最少需要减去多少。 #解题思路 先考虑暴力解法,枚举每个数作为最大的那个数,然后分别从左右两个方向开始,如果当前的数字大于之前的数字,就将他改成之前的那个数。 然后我们可以考虑dp来 阅读全文
posted @ 2021-03-17 20:35 shuitiangong 阅读(72) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 略 #解题思路 如果一个子段合法,那么必然左边的值作为最小值的区域和右边的值作为最大值的区域都能包含彼此,所以用单调栈求出右边的值作为最大值能到达左边的下标的最小值$l_i$,以及左边的值作为最小值能够到达右边的下标的最大值$r_i$,然后将前者排序,按从左到右的顺序遍历每个数 阅读全文
posted @ 2021-03-17 20:01 shuitiangong 阅读(73) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 给你n个点问他们组成的直线有多少对相交。 #解题思路 这题如果用直线的点斜式的话很好做,可以用分数来表示斜率和截距,然后利用任意两个不同斜率的直线必定相交来求解,注意分子分母都要化到最简形式。 #代码 const int maxn = 1e3+10; const int max 阅读全文
posted @ 2021-03-06 10:32 shuitiangong 阅读(82) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 给你一些操作,可以在图中添加一条原来没有的有向边,也可以删除一条存在的有向边,每一个边有一个边权,为一个字符。查询操作问是否存在一个长度为k的序列,k中可以有重复的点,并且每个相邻的点在图上也是相邻的,这个序列按照从左到右的顺序访问和从右到左的顺序访问所得到的字符串是一样的。 阅读全文
posted @ 2021-03-05 21:35 shuitiangong 阅读(80) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 给你一张图,图里有很多连通块,你可以将一条边中的一个点去掉连到另外一个点上,问你将整张图变成连通图的最小代价。 #解题思路 我们如果要使两个连通块相连的话,去掉的那个点一定不能是割点,所以每次连接的时候去掉一个连通块上不是割点的点,然后让其和另一个连通块上的任意一个点相连就行了 阅读全文
posted @ 2021-03-05 20:04 shuitiangong 阅读(59) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 给你一些交通方式和站点,不同的交通方式碳排放不一样,问从起点到终点距离不超过B的路径中最少的碳排放是多少。 #解题思路 最短路和dp的混合题,设dp[u][j]表示到点u路径长度为j的最少碳排放,在最短路进行松弛的过程中进行状态转移就行了。 #代码 const int maxn 阅读全文
posted @ 2021-03-05 19:59 shuitiangong 阅读(96) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 有一个n个点的树,每个点都有一个权值,并且父节点的权值严格大于所有子节点的权值,现在给你n个点中任意两个点的lca的权值,让你构造出来这棵树。 #解题思路 因为父节点的权值严格大于所有子节点的权值,很容易想到按权值从小到大开始合并,但是有一个坑点,就是如果有几对点的lca的权值 阅读全文
posted @ 2021-03-03 20:56 shuitiangong 阅读(164) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 给你一个$n\times n$的正方形网格,然后问上下两行和左右两列能否放置u,d,l,r个格子。 #解题思路 直接暴力枚举四个角的放置情况,然后判断所给的数字是否在可行的范围就行了。 #代码 const int maxn = 1e5+10; const int maxm = 阅读全文
posted @ 2021-03-03 19:39 shuitiangong 阅读(194) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 你站在0的位置向左右推箱子,如果推的箱子与另一个箱子相邻,那么另一个箱子会一起移动,不能将箱子拉向自己,然后有几个特殊位置,问最多能将多少个箱子推到特殊位置上。 #解题思路 把位置是正数和负数的箱子分开处理。枚举第一个箱子推到每个特殊位置时候的情况,然后再计算出连在一起的箱子( 阅读全文
posted @ 2021-03-03 19:35 shuitiangong 阅读(309) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 给你n个区间,然后你可以选择一个区间[l,r],我们定义S的值为区间[l,r]中包含的所有完整子区间的权值w之和减去$k\times (r-l+1)$,求最大的S. #解题思路 这种问题有一种套路就是先固定一个端点,然后枚举另外一个端点,这个题就可以用到。我们将区间按右端点排序 阅读全文
posted @ 2021-03-03 09:37 shuitiangong 阅读(48) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 给出n个人,每个人都有一个能力值。然后公司每年会把能力值最低的几个人换掉,然后还有q个修改方案,修改方案会修改之前替换的能力值,问原来n个人中的第一个人是否会被t掉。 #解题思路 首先需要统计出未修改时上次替换之后还有多少人的能力值比第一个人小,然后将其与现在需要替换的人数相减 阅读全文
posted @ 2021-03-01 21:40 shuitiangong 阅读(58) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 问约瑟夫游戏第m个出局的人的编号。 #解题思路 首先需要知道怎么递推求出约瑟夫游戏最后赢家的方法,可以参考这个博客。 对于第m个出局的人,他在第m轮的位置肯定是(k-1)%(n-m+1)+1,然后人数从n-m+1递推到n的过程中,每一步都要把当前赢家的位置往后挪k个并取模,但是 阅读全文
posted @ 2021-03-01 20:25 shuitiangong 阅读(78) 评论(0) 推荐(0)
摘要:题目链接 #题目大意 你可以将一个排列的前k个数字按升序排序,有多少种长度为n的排列满足其的lis的长度至少为n-1。 #解题思路 将原来的排列按升序排序。然后通过置换其中的数来考虑方案数。 首先如果前面k个数字都是1-k,那么后面n-k个数字的lis的长度只要不小于n-k-1就行了,而n-k个数字 阅读全文
posted @ 2021-03-01 20:12 shuitiangong 阅读(109) 评论(0) 推荐(0)