摘要:
题目链接 #题目大意 略 #解题思路 如果一个子段合法,那么必然左边的值作为最小值的区域和右边的值作为最大值的区域都能包含彼此,所以用单调栈求出右边的值作为最大值能到达左边的下标的最小值$l_i$,以及左边的值作为最小值能够到达右边的下标的最大值$r_i$,然后将前者排序,按从左到右的顺序遍历每个数 阅读全文
摘要:
题目链接 #题目大意 给你n个点问他们组成的直线有多少对相交。 #解题思路 这题如果用直线的点斜式的话很好做,可以用分数来表示斜率和截距,然后利用任意两个不同斜率的直线必定相交来求解,注意分子分母都要化到最简形式。 #代码 const int maxn = 1e3+10; const int max 阅读全文
摘要:
题目链接 #题目大意 给你一些操作,可以在图中添加一条原来没有的有向边,也可以删除一条存在的有向边,每一个边有一个边权,为一个字符。查询操作问是否存在一个长度为k的序列,k中可以有重复的点,并且每个相邻的点在图上也是相邻的,这个序列按照从左到右的顺序访问和从右到左的顺序访问所得到的字符串是一样的。 阅读全文
摘要:
题目链接 #题目大意 给你一张图,图里有很多连通块,你可以将一条边中的一个点去掉连到另外一个点上,问你将整张图变成连通图的最小代价。 #解题思路 我们如果要使两个连通块相连的话,去掉的那个点一定不能是割点,所以每次连接的时候去掉一个连通块上不是割点的点,然后让其和另一个连通块上的任意一个点相连就行了 阅读全文
摘要:
题目链接 #题目大意 给你一些交通方式和站点,不同的交通方式碳排放不一样,问从起点到终点距离不超过B的路径中最少的碳排放是多少。 #解题思路 最短路和dp的混合题,设dp[u][j]表示到点u路径长度为j的最少碳排放,在最短路进行松弛的过程中进行状态转移就行了。 #代码 const int maxn 阅读全文
摘要:
题目链接 #题目大意 有一个n个点的树,每个点都有一个权值,并且父节点的权值严格大于所有子节点的权值,现在给你n个点中任意两个点的lca的权值,让你构造出来这棵树。 #解题思路 因为父节点的权值严格大于所有子节点的权值,很容易想到按权值从小到大开始合并,但是有一个坑点,就是如果有几对点的lca的权值 阅读全文
摘要:
题目链接 #题目大意 给你一个$n\times n$的正方形网格,然后问上下两行和左右两列能否放置u,d,l,r个格子。 #解题思路 直接暴力枚举四个角的放置情况,然后判断所给的数字是否在可行的范围就行了。 #代码 const int maxn = 1e5+10; const int maxm = 阅读全文
摘要:
题目链接 #题目大意 你站在0的位置向左右推箱子,如果推的箱子与另一个箱子相邻,那么另一个箱子会一起移动,不能将箱子拉向自己,然后有几个特殊位置,问最多能将多少个箱子推到特殊位置上。 #解题思路 把位置是正数和负数的箱子分开处理。枚举第一个箱子推到每个特殊位置时候的情况,然后再计算出连在一起的箱子( 阅读全文
摘要:
题目链接 #题目大意 给你n个区间,然后你可以选择一个区间[l,r],我们定义S的值为区间[l,r]中包含的所有完整子区间的权值w之和减去$k\times (r-l+1)$,求最大的S. #解题思路 这种问题有一种套路就是先固定一个端点,然后枚举另外一个端点,这个题就可以用到。我们将区间按右端点排序 阅读全文
摘要:
题目链接 #题目大意 给出n个人,每个人都有一个能力值。然后公司每年会把能力值最低的几个人换掉,然后还有q个修改方案,修改方案会修改之前替换的能力值,问原来n个人中的第一个人是否会被t掉。 #解题思路 首先需要统计出未修改时上次替换之后还有多少人的能力值比第一个人小,然后将其与现在需要替换的人数相减 阅读全文