题面 A.LCIS 一道裸的求LCIS(最长公共上升子序列)题. \(dp\)数组储存到\(b\)的第\(i\)项,\(a\)从\(1-n\)的且以\(b[i]\)结尾的最⻓公共上升⼦序列⻓度. 那么\(dp\)过程显然: if(a[i]>b[j]&&maxx<f[j]) maxx=f[j];更新可以⽤于更新\(b\)序列与\(a\)序列前\(i\)位的最⻓⻓度的最⼤值.
Checkposts \(tarjan\) 如果是 \(DAG\) 图,则只用找入度为 \(0\) 的点即可 因此考虑缩点后,找所有入度为 \(0\) 的点 最小值则为,缩点后所有入度为 \(0\) 的强连通块中,每个都拿一个代价最小的点 方案数为,在上述的强连通块,记录一下代价最小的点有多少个,全部相乘即可 因此 \(tarjan\)
Flight Routes Check 判断是不是一个强连通图,如果不是,就找出不能到达的单程 tarjan 模板 判断不能到达的,直接从 \(1\) 开始走一次搜索,如果与 \(1\) 不同强连通块上的点,且 \(1\) 能够到达那个点,显然答案就是从那个点到 \(1\) 记得考虑整个图不连通的情况 #include <iostream> #incl
前言 思维量还可以(也挺大的)但是代码量巨大(写起来特别不舒服)的又一道神仙题。 正文 题目大意:一棵树 \(n\) 个节点,以 \(1\) 为根,每个节点有两个属性 \((a,b)\),\(R(v)\) 为 \(v\) 的祖先(包括自己): \[|\sum_{u\in R(v)}a_u|\cdot|\sum_{u\in R(v)}b_u| \]需要支持: 将 \(a_v\) 加上 \(x
前言 被这道题虐暴了…… 正文 题目大意:有一棵 \(n\) 个节点,以 \(1\) 为根的树,你求出它的 dfs 序 \((a_1,...,a_n)\),每次操作可以: 选择最小的 \((a_u,a_v)\),满足 \(u\) 与 \(v\) 有有向边相连且 \(a_u<a_v\),并交换 \(a_u,a_v\)。 现在知道 \(k\) 次操作以后的 \(a_i\),请求出 \(k
之前树分块也只是听说,今天亲手学了一下(?)( 首先你会发现这个 \(B\) 和 \(3B\) 的约束就很迷(我也不知道为什么搞这种奇怪的约束(悲)),学了才知道。。。 所以这题的分块方法好像叫“王室联邦分块法”。 可还行~ 不吹水了,来口胡一波。 首先明确一点,任何一个省会一定是一群节点的祖先。 因此
题目 点这里看题目。 分析 交互题好难啊.jpg 我们先来分析一下怎么才能找出来一条边。假如编号为 \(k\) 的边被加入到 \(G\) 中的询问集合为 \(Q_k\),则询问必须满足对于任意的存在公共点的 \(e_1,e_2\),\(Q_{e_1},Q_{e_2}\) 之间不存在包含关系。否则我们无法准确地确定边的端点。
Preface 又是颓废的一天! Content [CF1251E2]Voting(Hard Version) 一共有 \(n\) 个选民,你可以付出 \(p_i\) 的代价让第 \(i\) 个选民为你投票,或者,在为你投票的人数达到 \(m_i\) 时,他会主动为你投票而不用你付出任何代价。 问得到所有选民投票的最小代价。 \(1\le n \le 2\t
Preface 真的摆了一整天啊啊啊啊啊啊。 Content 昨晚打比赛睡太晚,导致今天起得很晚。 早上去看题,写了道构造题,不出意外崩了,果断跑路。 下午打入门月赛,G 题死活三个点过不去,H 题想都懒得想。 然后把电脑给弟弟玩了好久,晚上九点才拿回来 QAQ。 [CF500E]New Year Domino \(N\) 个多
所有题目都在橙到绿之间。梦回小学。 UVA [101] - The Blocks Problem 用一个前驱数组和一个后继数组维护一个类似于链表的结构。 然后每次更改根据题意要求,依次递进地更改结点的前驱 / 后继即可。 namespace XSC062 { using namespace fastIO; const int maxn = 35; char t, t1
这是一道经典的洛谷水题了,虽说是IOI的(但毕竟很古老了),然后我提供一下我的思路吧。 链接洛谷题面:https://www.luogu.com.cn/problem/P1216 首先,金字塔的输入规律应该不用讲了,从第一行i=1开始读入,一直到i=n,每行读入i个数字,取路径上的最大值。 设dp状态为走到第i行第j列时的最大值。
作为可并堆的一种,左偏树算是又好写功能全且复杂度比较优的了 首先介绍一下结构: 左偏是指定义的 \(dis\) 值左子树比右子树大 \(dis\) 指的是 \(min(son_0,son_1)+1\),叶节点为零 注意这里的 \(dis\) 并不是深度,左偏树的深度是没有保证的,哪怕是一条链,只要满足左偏的性质就是符合的
Description Solution Code #include <cstdio> #include <algorithm> #include <queue> #define int long long using namespace std; const int MAXN = 1e5 + 10, MAXM = 4e5 + 5, INF = 1e18; int n, m, C; int head[MAXN], nxt[MAXM], ver[MAXM], edge[
Description Solution 我们不难发现最终得到的是一个单峰序列,所以中间那个草一定放最高的,然后往两边依次放叫矮的。 由于每一次操作会增加一组逆序对,所以只需要思考如何让最终序列的逆序对数最少。 我们可以正反跑两次,放那边的逆序对最少,就是每一个草的贡献,就去那边,最后求和即可
题目大意: 就是给你一个长度为 \(n\) 的序列 \(a_i\) ,现在只能进行 \(+1\) 和 \(-1\) 的操作,问你最少需要多少步操作才能将原序列变为下标从 \(1\) 到 \(n\) ,且数值同样从 \(1\) 到 \(n\) 的序列。 题目分析: 这题我们可以使用贪心的策略,我们这样想: 将序列按从小到大的顺序排序后,每
Preface 又是颓废的一天 www Content [CF912D]Fishes 有一个长为 \(n\),宽为 \(m\) 的鱼缸,还有一个边长为 \(r\) 的正方形渔网。往鱼缸里放 \(k\) 条鱼,问用渔网随机在浴缸里捞鱼的最大期望是多少。 \(1\le r \le n,m\le 10^5,1\le k \le \min(n\times m,10^5)\)。 虽然题面含期望
我寻思着拿两个指针一扫不就得了? 首先把特殊贡献奖和科技创新奖排好序,再用指针寻找两个序列中编号相同的,最后输出。 时间复杂度大概为O(2*n*log(n)+2n) 因为排序打乱了原先科技创新奖获奖名单中的先后次序,所以我们要记录好每一个获得科技创新奖的人的编号的位置,并记录好原科
概述 又名:来自学长的告别 估分:\(???+???+40+20=???\) 实际挂分:\(0+10+20+50=90\) rk 19 赛时 干了快两小时 T1,以为是最可做,结果赛后发现 T1 人均最低分。 T2 最后感觉像是二分,但是判断写的是关于圆位置关系的函数,假掉了。 T3 和 T4 没什么思路,打了暴力跑路。 反思 和暴力拍过了,可
题意 找出 \(S\) 的最长的子串 \(T\),满足 \(T\) 是 \(S\) 的前缀、后缀,并在中间出现过。不存在则输出 Just a Legend 思路如下: 题目要求目标串是 Border,并且在中间出现过,即要求子串是 Border ,并且出现次数大于等于 3 次。 那么我们记录字符串末尾在 SAM 中的位置 pos,然后跳它到根
传送门 题意: 在每一轮游戏玩家选择一个数字从1 ~ 1e9, 在这之后一个甩子有1e9个面旋转,会出现任意的一个数字,如果这个玩家猜对了,他们的钱就会成倍,如果猜错了,他们的钱就会减半,M能够遇见未来,知道n个回合甩子将会展现的数字\(x_1, x_2, x_3, \cdots, x_n\), 他将会选择三个数字a, l, r(
做法 1 首先第 \(i\) 次至少会加上数字 \(i\),所以前 \(i\) 次跳最少会到 \(\cfrac{i(i+1)}{2}\),所以跳的次数最大是根号级别的。 我们直接枚举操作到第几次,每次计算一个类似前缀和的数组来更新答案,每次都累加答案即可,类似于前缀和优化DP.复杂度为 \(O(n\sqrt n)\) #include<iost
Preface 太蒻了QAQ Content [CF76A]Gift \(N\) 个点,\(M\) 条边的无向图,第 \(i\) 条边有两个权值 \(g_i,s_i\),给定两数 \(G,S\)。 求一棵生成树 \(T\),使得 \(ans=G\times \max\limits_{i\in T}(g_i)+S\times \max\limits_{i\in T} (s_i)\) 最小,无解输出 \(-1\)。 \(1\le N \le 200
\(\cal T_1\) Abracadabra Description 给定长度为 \(N\)(保证为偶数)的排列,每次操作将排列对半分,然后做归并。\(Q\) 次询问,求 \(t\) 次操作后的第 \(i\) 张牌。 \(N\leqslant 2\cdot 10^5,Q\leqslant 10^6,0\leqslant t\leqslant 10^9\). Solution 一些闲话:黑心糖赛高! 可以发现归
题意 求满足 \(\displaystyle \forall i\in [2, n], p_i > p_{\lfloor i / 2\rfloor}\) 的 \(1\sim n\) 的排列 \(p_1, p_2\dots p_n\) 的数量,输出模 \(m\) 后的值。 思路 上述问题可以转化为求节点标号为 \(1\sim n\) 且满足小根堆性质的完全二叉树的数量。 设节点 \(u\) 的两个
https://www.luogu.com.cn/problem/P1821图论,最短路黄色题 思路: 主要就是比模板多了一个反向建图 我们首先想到的是从每个点都求一遍到终点的最短路,这样会加大时间复杂度。 所以,我们可以反向建图,直接把单终点最短路转为单源最短路,只需要跑两次最短路算法,显然是稳过的。(可以自