08 2018 档案
摘要:嘟嘟嘟 遇到这种无从下手且数据范围特别小的题,直接一波爆搜加剪枝就行了。 爆搜就是选到的数是严格从大到小的,这样才能保证复杂度是C(n, m)的,然后枚举每一个数是选了还是没选。 剪枝有这么几点。 1.如果当前值比x / y大,返回(显然~)。 2.如果当前值加上最小值仍比x / y大,返回。 3.
阅读全文
摘要:嘟嘟嘟 题中说任意两个点之间只有唯一1条路径,意思就是这是个树~ 概括一下,就是求min(c->a, c->b) + a->b 的最大值。 显然,让整体最大,那就让这两项最大即可,a->b的最大值显然就是树的直径,跑两遍bfs(最短路)就行。 至于第一项,枚举c,每一次求出a->c, b->c的两者
阅读全文
摘要:嘟嘟嘟 先考虑这两点: 1.如果我们有结束时间相同的课程,且达到的能力相同,那么我们一定选择开始时间最晚的。 2.如果有能力值相同的滑雪坡,我们一定选择时间最短的。 因此先预处理两个数组。cla[i][j]代表在 i 时刻结束,能力值达到 j 的课程中开始的最晚时间,ski[i]代表需要能力值至少为
阅读全文
摘要:嘟嘟嘟 暴力啊,统计当前数 i ,对是 i 的倍数的约数的贡献。 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<algorithm> 5 #include<cstring> 6 #include<cstdli
阅读全文
摘要:嘟嘟嘟 这道题题面我是看了小半天才懂(太菜了),然后就发现好水啊。 只要维护一个栈,存的是t,代表当前的正方形是2t * 2t的,然后从头开始扫序列,如果遇到2,就把栈顶元素取出来,然后放进去四个t - 1;如果遇到0,就往结果中加入当前栈顶元素t的2t * 2t. 此题最大范围是250 * 250
阅读全文
摘要:嘟嘟嘟 这很显然是一道dp题。 令dp[i][j]表示第 i 分钟末,疲劳度为 j 是的最大跑步距离,则 dp[i][0] = max(dp[i - 1][0], max(dp[i - j][j])) dp[i][j] = max(dp[i - 1][j - 1] + a[i]) 因为题中说即使疲劳
阅读全文
摘要:嘟嘟嘟 当看到n <= 50 的时候就乐呵了,暴力就行了,不过最暴力的方法是O(n7)……然后加一个二分边长达到O(n6logn),然后我们接着优化,把暴力比对改成O(1)的比对hash值,能达到O(n5logn),到勉强能过……不过我们还可以在优化一下,把第一个矩阵中所有边长为 l 的子矩阵的ha
阅读全文
摘要:嘟嘟嘟 首先想想暴力的做法,枚举加入的字符,然后判断删去这个字符后两个长度为n / 2的字符串是否相等,复杂度O(n2)。 所以可以想办法把判断复杂度降低到O(1),那自然就想到hash了。hash是能做到O(n)预处理,然后O(1)比较的。 取一段的hash值:hash[L, R] = hash[
阅读全文
摘要:这里发一下luogu线段树2的代码~~ 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<algorithm> 5 #include<cstring> 6 #include<cstdlib> 7 #include
阅读全文
摘要:10.7更新:见最下面 离NOIP2018没剩多长时间了,我突然发现我连对拍还不会,于是赶紧到网上找资料,找了半天发现了一个特别妙的程序,用c++写的! 不过先讲讲随机数据生成吧。 很简单,就是写一个程序模拟输入数据,然后利用rand()编写随机数。 在头文件cstdlib中,有rand(), sr
阅读全文
摘要:嘟嘟嘟 这题还是比较水的。首先O(n2)模拟显然过不了,那就换一种思路,考虑每一个数对答案的贡献,显然一个数a[i]会对后面的a[i] * 2, a[i] * 3,a[i] * 4……都贡献1,。那么就想线性求因数个数一样,对于每一个a[i],都计算出对能被他整出的数的贡献。 1 #include<
阅读全文
摘要:嘟嘟嘟 考虑建图:如果A喜欢B,那么从A 到B就有一条边。有因为牛之间的喜爱关系有传递性,所以如果途中存在一个环的话,那就说明这个环中的任意一头牛都会被喜爱。那么自然可以想到用tarjan缩点来简化图。这样在一个DAG中,会发现被该联通块喜爱的牛一定是没有出边的。因为这张图可能不连通,所以还有记录这
阅读全文
摘要:嘟嘟嘟 遇到这种判断相等或不等的题,一般都能想到并查集。 我的做法是如果遇到两个数相等就将这两个数所在集合合并,不等就存下来。带输入完后,在验证不等的数,如果他们相等或是在同一个集合中,说明和前面的描述矛盾,因此是不可满足的;若是直到最后都可以满足,那么这些问题可以同时满足。 数据较大,因此用一个m
阅读全文
摘要:嘟嘟嘟 树剖自然可解,就是一道板子题,而且这道题还只问到根节点的距离是多少,而不是树上任意两点距离,就更方便了。 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<algorithm> 5 #include<cs
阅读全文
摘要:嘟嘟嘟 我先瞅了一眼数据范围,l <= 10, T <= 15,然后凭着我不灵光的数学10! * 15 = 54432000 ≈ 5e7,于是我们就水一发全排列,然后就卡过去了…… 1 #include<cstdio> 2 #include<iostream> 3 #include<algorith
阅读全文
摘要:嘟嘟嘟 区间dp。 令dp[i][j]表示从[i, j]的最少染色方案数。 很明显,当 i == j 时,dp[i][j] = 1;否则,如果s[i] == s[j],即两个端点颜色相同,那么端点处的颜色只用染一次,也就是说可以从 i 这头染,也可以从 j 这头染,则dp[i][j] = min(d
阅读全文
摘要:嘟嘟嘟 这题有人说部分分O(n3)暴力,然而我暴力都没写过,调了半天也没用……还是看题解吧 首先,咱把A * ( h – minH ) + B * ( s – minS ) <= C 变个型,得到 A * h + B * s - C <= A * minH + B * minS. 令 sum = A
阅读全文
摘要:嘟嘟嘟 此题一看就是一个dp题。 首先我们设dp[i][j]表示前 i 个人中有 j 个男生(这和dp[i][j]表示 i 个男生 j 个女生等价),然而当我们转移到dp[i + 1][j + 1]或dp[i + 1][j]时,限制条件没有用上。所以要再加两维dp[i][j][x][y]表示前 i
阅读全文
摘要:嘟嘟嘟 这道题有一个特别重要的一点,就是节点数为 n 的图只有 n 条边,于是就有一下几个性质: 1.每一个点的出度都为1。 2.一个k个节点的强连通分量都是有k条边的环,而且这个环不会通往其他的点,只可能有别的点通往这个环。 所以说,对于一个在环中的点,答案就是这个环的节点数(包括自环),对于一个
阅读全文
摘要:嘟嘟嘟 这道题就是一个模拟。 首先我们建一个优先队列,存所有等待的进程,当然第一关键字是优先级从大到小,第二关键字是到达时间从小到大。然后再建一个指针Tim,代表cpu运行的绝对时间。 然后分一下几种情况: 1.如果等待队列为空,那直接调到当前该执行的进程的到达时间,并把它放进等待队列(可以这么理解
阅读全文
摘要:嘟嘟嘟 刚开始因为没看到只能走没有损坏的农场,磨叽了20多分钟……不管了,写题解吧。 首先如果一个点不能到达原点,那么和他相邻的点也不能到达原点,所以刚开始我们把不能走的点和他相邻的点都打上标记,然后跑dfs就行了。 1 #include<cstdio> 2 #include<iostream> 3
阅读全文
摘要:嘟嘟嘟 某谷的翻译挺迷的,简单来说就是给一个初值c,然后有两个函数f1 = a1 * x / d1 + b1, f2 = a2 * x / d2 + b2.把c分别带进去,所得的结果也递归带进去,这样的到一串数,输出第n小的。 这道题如果都带进去,然后在排序肯定行不通,因为这一串数不是递增的,不能确
阅读全文
摘要:嘟嘟嘟 直接O(n ^ 2)暴力判断就行了。 对于圆,判断该点和圆心的距离是否小于半径。 然而为啥我这么写编译不过: 1 scanf("%lf%lf%lf%lf", &a[++cnt1].xl, &a[cnt1].yl, &a[cnt1].xr, &a[cnt1].yr); ++cnt1必须拎出来写
阅读全文
摘要:嘟嘟嘟 首先可以知道,对于在哪个时候攻占一个城市,应该是他的最短到达时间和最早进入时间的最大值(max(d1[i], d2[i]))。 最短到达时间:就是朴素的最短路d1[i]。 最早进入时间:设所有到达有他的结界发生器的城市为j,那么应该是在所有最短时间中取max,作为d2[i]。 于是就可以用d
阅读全文
摘要:嘟嘟嘟 这道题删完边后是一棵树,那么一定和最小生成树有关啦。 考虑最后的生成树,无论从哪一个点出发,每一条边都会访问两次,而且在看一看样例,会发现走第w条边(u, v)的代价是L[w] * 2 + c[u] + c[v],所以说把每一条边的边权改为这个,然后跑裸的最小生成树就行了。然后答案还要加上出
阅读全文
摘要:嘟嘟嘟 竟然还能发现这么水的题。就是线段树维护区间亦或嘛~~~~ 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 #include<cstdli
阅读全文
摘要:嘟嘟嘟 一看n那么小,那一定是状压dp了(表示从没写过,慌)。 首先dp[i][j](i 是一个二进制数,第x位为1代表选了第x头牛),表示 i 这个状态最后一头牛是第 j 头牛时的方案数。 然后当 j 被选上时,即 if(i & (1 << (j - 1)))时,我们在枚举倒数第二头牛p,也是当他
阅读全文
摘要:嘟嘟嘟 dp。 刚开始我想的是dp[i][j]表示在第 i 棵树上,高度为h能吃到的最多的果子,如此能得到转移方程: dp[i][j] = max(dp[i][j + 1], dp[k][j + derta]) (k = 1~n && k != i)。但因为这样写会导致dp[k][j + derta
阅读全文
摘要:嘟嘟嘟 这道题我第一眼看出就是RMQ,不过因为细节挺多的调了挺长时间。 st表正常预处理自不必说,主要是有没出现的年份怎么处理。 首先我们考虑false的情况: 1.左右端点年份都已知,且y的降水量小于x或者这中间最大的降水量大于x。 2.左端点年份已知,且中间的最大降水量大于等于左端点降水量。 3
阅读全文
摘要:嘟嘟嘟 刚开始想这道题的时候确实很蒙,只想到矩形对边做对应的弧长相等,然后想办法凑出相等的弧长。其实正解很简单,不要去想边,应该想对角线,因为根据初中园的知识,这个矩形的对角线是圆的直径,而直径所对的弧是周长的一半,所以只要每局两个指针 i,j,如果这两个的距离是周长一半的话,就cnt++,所以最终
阅读全文
摘要:嘟嘟嘟 这道题只要状态一想出来,这题就做完了。 另 dp[i][j] 表示 i 首歌音量 j 能否达到,则如果dp[i - 1][j] = 1,那么dp[i][j + c[i]] = dp[i][j - c[i]] = 1.然后最后从Max到0反向遍历dp[n][i]即可。 注意这题数组要开2e3,
阅读全文
摘要:嘟嘟嘟 考虑如果第一个格子是否是雷确定了,那么a[1]的合法性就确定了(a[]代表输入的一串数)。这样对于a[2],唯一不确定的格子就是b[3](b[i]代表i这个格子是否有雷),而b[3]又可以根据a[2]而定,所以说只要第一个格子确定,整个序列就确定了。因为一个格子只有有雷和没有雷的情况,所以答
阅读全文
摘要:嘟嘟嘟 这道题就是田忌赛马吧,首先排个序,然后将最强的和最强的比较,如果a > b,就当然打,若果打不过,就让a中最弱的去送死,然而如果这个最弱的能把对方最弱的打过,就不能让他去送死,因此这里要判断一下。 用四个指针代表a中当前最弱的和最强的以及b中最弱的和最强的,然后分情况移动指针就行。 至于最坏
阅读全文
摘要:嘟嘟嘟 首先我们按自毁时间排序。然后这样从1到n遍历,尝试修复当前第 i 个建筑:如果当前修复建筑所用的时间加上修复第 i 号建筑的时间在自毁前能完成,我们当然要修复它;如果不能完成,那么我们当然要从当前选的ans个建筑以及第i个建筑中修复时间最长的那个把他扔掉,这么做是为了节省时间,好有更大的机会
阅读全文
摘要:传送 UPD.2021.03.09 这道题有两种做法,一种是单调队列,另一种是二维st表。 单调队列的做法就是枚举上边界$i$,这样就能确定矩形的下边界为$i+r-1$。在这个范围内,用每一个竖条的最大值(最小值)代替整个竖条,就变成了滑动窗口问题了。 代码里存了原矩阵和元素为相反数的矩阵,这样只用
阅读全文
摘要:嘟嘟嘟 对于求深度和宽度都很好维护。深度dfs时维护就行,宽度统计同一个深度的节点有多少个,然后取max。 对于求距离,我刚开始以为是要走到根节点在回来,然后固输了(dep[u] - 1) * 2 + dep[v] - 1,结果竟然得了80分,数据有点水过头了…… 实际上就是求LCA,然而因为只求一
阅读全文
摘要:嘟嘟嘟 此题看起来不难。 首先我想到的是用map,然而只能的70分,剩下的超时了。然后我就想到了用去重函数unique,这样就过了。 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cmath> 5 #
阅读全文
摘要:嘟嘟嘟 这一看都知道,肯定是线段树,只不过这个稍微有些复杂…… 首先对于操作0和1都是很好办的,比较简单的区间修改。然后查询区间多少个1,就是区间和,也好办。 至于查询连续个1,做过酒店的都知道怎么办,维护一个imax[now](imax是interval's max,不是电影……):区间连续的1是
阅读全文
摘要:嘟嘟嘟 这题学过多重背包二进制优化都知道用二进制拆分就行,然而题中说两数不能相同,比如9,拆分后就是1 2 2 4,不符合,所以遇到a[i] == a[i + 1] 的情况,就a[i]--,a[i + 1]++就行。 1 #include<cstdio> 2 #include<iostream> 3
阅读全文
摘要:嘟嘟嘟 这题首先直接bfs可定过不了,因此可以先贪心缩小两个点的距离,直到达到某一个较小的范围(我用的是30),再bfs暴力求解。 首先我们求出这两个点的相对距离x, y,这样就相当于从(x, y) 走到(0, 0)。然后贪心时,x, y哪一个大,就-=2,另一个--。注意的是要一直保持x, y都是
阅读全文
摘要:嘟嘟嘟 因为数据只有5000,所以可以O(n2)暴力。 首先预处理二维前缀和,然后枚举正方形的左上角,将每一次的得到的总价值去最大,作为答案。 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstri
阅读全文
摘要:嘟嘟嘟 裸的最小生成树。 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<cstdlib> 7 #include<vector
阅读全文
摘要:嘟嘟嘟 一道博弈论经典题,nim游戏。 只不过要考虑有奇数个石子为1的堆的时候,为Brother赢。剩下就是nim游戏了。 极简代码 1 #include<cstdio> 2 using namespace std; 3 4 int T; 5 6 int main() 7 { 8 scanf("%d
阅读全文
摘要:嘟嘟嘟 遇到这种题,再看看这数据范围,一般都是暴力。 然而暴力也是有差别的,比如我写的那个,代码悠长有让人看不懂,而且最终还没过,看了点题解的思路,发现我有很多情况都重复了,导致不仅时间复杂度无法保证,而且正确性还待考察。 首先,我们从1到n枚举等待牌,然后在枚举对子,接着在枚举刻子,最后看看能否凑
阅读全文
摘要:嘟嘟嘟 这还是一道树链剖分板子题呀! 从1到n - 1枚举a[i],每一次使节点a[i]到a[i + 1]的路径加1,但这样的话除a[1],每一个点都多加了一个1,所以输出答案的时候减1即可。 1 #include<cstdio> 2 #include<iostream> 3 #include<al
阅读全文
摘要:嘟嘟嘟 一看就知道,一道树链剖分板子题,原来2008年的ZJOI这么可爱。 那啥别忘了权值有负数,所以查询最大值的时候ans初始值应该是-INF,别写成0了。 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #inclu
阅读全文
摘要:嘟嘟嘟 一道RMQ板子题,分别维护最大值和最小值,不解释。 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 #include<cstdlib>
阅读全文
摘要:嘟嘟嘟 简单说就是一道最短路+dp。 令dp[i] 表示到第 i 天最小的总成本,每一次 j 从 i 到1枚举,得到dp方程 dp[i] = min(dp[i], dp[j - 1] + cost * (i - j + 1) + k)。其中 cost 表示从 j 到 i 这几天都可以走的最短路,因此
阅读全文
摘要:嘟嘟嘟 这道题最多只切9刀,然后爆搜就过了(这只是感性理解吧,复杂度我不太会算)。 怎么爆搜呢,首先,如果一个长为x,宽为y的蛋糕被分成k份,那么每一份长最小为x / k,宽最小为y / k,而且每一块蛋糕的长和宽都是这个数的整数倍,这个不难理解。 然后就可以爆搜了:对于每一个状态(x, y, k)
阅读全文
摘要:嘟嘟嘟 这是一篇假题解 刚开始这道题我觉得是矩阵树定理,然而好像还得用高斯消元求行列式,不太会呀……然后想了半天dp式也没想出来,看了题解还是不太懂,最后lba,qmcp两人告诉了我一个玄学的方法。 首先f[1] = 1, f[2] = 3,然后像斐波那契一样递推直到第n项,如果n为奇数,就输出f[
阅读全文
摘要:嘟嘟嘟 只要每一次将优先级最高的上面的物品移走,就一定能保证是最优解。 所以我们只要想办法简化这个模拟移物品的过程,看完了题解后,发现可以这么想,我们可以把两个栈头碰头的挨在一起,然后设一个指针代表两个栈的分界线,这样移动物品就变成了移动指针,而每一次移动的步数,就是指针和这个物品之间的距离。 开始
阅读全文
摘要:传送门:嘟嘟嘟 第一反应是树链剖分,但是太长懒得写,然后就想出了一个很不错的做法。 想一下,如果我们改一条边,那么影响的只有他的子树,只要先搞一个dfs序,为什么搞出这个呢?因为有一个性质:一个节点的子树在dfs序上是连续的,所以这道题就变成了一个单点查询,区间修改的线段树(树状数组)板子题。 然后
阅读全文
摘要:嘟嘟嘟 此题我想了半个点,得出一个重要结论:我除了暴力以外啥也想不出来。 然后看了一下题解,彻底懵了…… 对于每一个数 j,令x = j * a,因为题中说了一句“只要结果的相对误差不超过5%即可”,所以用分块解决这[1, x]。正好一块的部分[L, R]就都除以 j - (L +R) / 2……没
阅读全文
摘要:嘟嘟嘟 就是线段树板子题,还是单点修改区间查询。 用一个指针cnt记录当前序列里有几个数,然后操作1就是把++cnt的位置的数改为(n + t) % d;操作2就是查询cnt - L + 1到cnt的区间最大值。 我用的是先把线段树的节点开好的方法,所以这题按区间长度等于m开就行。 1 #inclu
阅读全文
摘要:嘟嘟嘟 很容易想到,相对于直线 l1,斜率较大的直线 l2 一定在这两条直线的交点的右侧将l1 覆盖掉,而l2在交点的左侧部分会被l1覆盖。这样的话,对于三条直线l1, l2, l3 满足k1 < k2 < k3, 设l1和l2的交点为A, l1和l3的交点为B, l2和l3的交点为 C,如果B在A
阅读全文
摘要:嘟嘟嘟 维护联通块自然想到并查集,然而题中说是删边,不是很好做,因此我们可以离线下来然后倒序操作,就变成了添加边的同时维护联通块数量。 首先我们把k次打击后剩的边都添加到图中,表示倒序时的初始状态。然后将 i 从 k 到1枚举,将第 i 个被袭击的星球 del[i] 连的所有边都加入图中,同时维护并
阅读全文
摘要:题面 一道很水的数论题。 考虑不发生越狱的情况:第一个人可信m种宗教,第二个人只能信m - 1种宗教,第三个人也只能信m - 1种宗教,那么这割状态总数就是m * (m - 1)n - 1。 题中说求越狱状态总数,那么就是mn - m * (m - 1)n - 1,别忘取模。 1 #include<
阅读全文
摘要:题面 一眼看就是最小割板子题,建图也很直观,注意每一条边建双向边其实不用建4条边,只要反向边的容量和正边相同就行。然后直接跑最大流板子就行。不过此题拿vector存图会MLE……而拿链前存图就能卡过去……场面一度十分尴尬。 这里发一个vector80分代码,各位改成链前就能AC了…… 1 #incl
阅读全文
摘要:T1 园艺工人的求助 【题目描述】终于,在一段繁忙的训练之后,到了NOIP 的举办的时候。同学们坐上了大巴车,享受着沿途的风光,讨论着未解决的问题,憧憬着NOIP 赛场上切题的样子。很快,大巴车到了大连大学科技楼,也就是辽宁NOIP 的举办地点。大连大学科技楼是一幢宏伟的建筑,楼前摆放有一排花,共有
阅读全文
摘要:传送门:https://www.luogu.org/problemnew/show/P1144 这虽然是一道普及+的题,然而我发现我现在还没做过,这也就直接导致我今天模拟T2只杠了个暴力分…… 那这道题怎么做呢?既然是最短路,那么一定要用spfa或dijkstra了,这里就讲dijkstra的做法吧
阅读全文
摘要:T1准确率 【题目描述】 你是一个骁勇善战、日刷百题的OIer. 今天你已经在你OJ 上提交了y 次,其中x次是正确的,这时,你的准确率是x/y.然而,你最喜欢一个在[0; 1] 中的有理数p/q(是一个既约分数),所以你希望再进行若干次提交,使你的准确率变为p/q. 当然,由于你的实力很强,你可以
阅读全文
摘要:题目大意: 一天,Vanya 来到了一片滑稽树林中,准备采摘滑稽果。滑稽树林可看作一个 n×n 的正方形,其中 m 个点上有滑稽果,某些点没有。(注意一个点上可能有多个滑稽果) Vanya会沿向量 (dx,dy)(dx,dy) 方向移动。也就是说,如果Vanya在 (x,y) 处,她将移动到 ((x
阅读全文
摘要:传送门:https://www.luogu.org/problemnew/show/CF838D 这道题反正我自己想是毫无头绪,最后还是听了肖大佬的做法。 因为题中说乘客可以从前后门进来,所以我们可以把这n个作为想象成一个环,然后乘客们都从n + 1的位置出发,于是从前后门就变成了顺逆时针。 很容易
阅读全文
摘要:传送门:https://www.luogu.org/problemnew/show/P1231 这是一道很不错的网络流入门题,关键在于如何建图。 首先,我们将练习册和源点连一条边权为1的边,然后若书 i 和练习册 j 可以配套,就将连一条从练习册 j 到书 i 边,当然边权还是1。同理,答案和书也是
阅读全文
摘要:传送门:https://www.luogu.org/problemnew/show/P3324 首先瞅一眼数据范围,发现m, n都很小,所以就可以初步断定这是一道网络流的题。 因为题中说每一个武器只能攻击特定的机器人,所以可以想象成这把武器有一条指向该机器人的边,那流量是多少呢?这是不确定的,因为武
阅读全文
摘要:传送门:https://www.luogu.org/problemnew/show/CF799B 题中说每一个人只要一种颜色,无论正反面,所以我们只要贪心的选包含这种颜色中且没有被别的人选过的价格最小的衣服就行了。 实现只要每一种颜色开一个优先队列,然后给每一件衣服标号,然后对于每一个人,查看他要的
阅读全文
摘要:题目大意: 给定一个长度不超过10^5的字符串(小写英文字母),和不超过5000个操作。 每个操作 L R K 表示给区间[L,R]的字符串排序,K=1为升序,K=0为降序。 最后输出最终的字符串 首先这么想想,对于一段区间的排序,排完序的样子和排序之前每个字母的位置并没有关系,而是和每一个字母出现
阅读全文
摘要:传送门:https://www.luogu.org/problemnew/show/P3387 首先呢,tarjan找一个图的强连通分量是基于对图的dfs的。这中间开了一个dfn[]代表dfs序,还有个low[]代表该节点在dfs形成的树中能到达的最近的根。然后分情况进行更新(一会儿看我代码吧)。
阅读全文

浙公网安备 33010602011771号