摘要:
题面 Sample Input Sample Output HINT Solution 首先考虑序列上的这个问题: 给定一个序列, 有两种操作 修改一个位置上的值 询问某个区间中的连续段的最大权值和 做法是: 用一个线段树维护这个序列, 每个节点所对应的区间记录以下4个信息: 表示整个区间的权值和 阅读全文
摘要:
Solution 首先审清题意, 这里要求的是子串而不是子序列... 我们考虑用1表示p, 1表示j. 用 表示字符串前$i$的前缀和. 则我们考虑一个字符串$[L, R]$有什么要求: $\forall x \in [L, R]$满足$sum[x] \ge sum[L 1]$. 我们分别从前往后和 阅读全文
摘要:
题面 Description 有一棵神奇的树。这棵树有N个节点,在每个节点上都有宝藏,每个宝藏价值V[i]金币;对于每条边,每经过一次都要花费C[i]金币。 值得注意的是,每个宝藏只能领取一次(也可以不领);但对于所有的边,如果要多次走这条边,将会多次产生费用。 我们定义 ans[i] 为从点 i 阅读全文
摘要:
题目大意 给定一棵带有边权的树, 问你在树上随机选两个点, 它们最短路径上的边权之和为$4$的倍数的概率为多少. Solution 树分治. 没什么好讲的. cpp include include include include include using namespace std; namesp 阅读全文
摘要:
Solution 这道题有两个关键点: 如何找到以原串某一个位置为结尾的某个子序列的最晚出现位置 如何找到原串中某个位置之前的所有数字的最晚出现位置中的最大值 第一个关键点: 我们注意到每个数字在$M$和$L$中最多只会出现一次. 以$M$为例, 我们从前往后逐位在原串中匹配, 数组 表示$M$的前 阅读全文
摘要:
Solution 场上的想法(显然是错的)是这样的: 我们假设棋子是一个一个地放置的, 考虑在放置棋子的过程中可能出现哪些状态. 我们令有序整数对$(i, j)$表示总共控制了$i$行$j$列的情况, 我naive地认为一个状态要么不出现, 要么只出现一次. 于是用$f[i][j]$来表示出现的概率 阅读全文
摘要:
题目大意 给定一棵基环树, 问你有多少条路径的长度$\ge K$. 点数$\le 10^5$ Solution 基环树分治模板题. 我是这样做的: 加边的时候用并查集维护点的连通性, 少加入环上的一条边, 使得基环图变为树的形态. 首先在树上进行一次常规的树分治. 我们能得到不经过被删除的一条边的满 阅读全文
摘要:
题目大意 给你一个序列$a_1, a_2, ..., a_n$. 我们令函数$f(n)$表示斐波那契数列第$n$项的值. 总共$m$个操作, 分为以下两种: 将$x \in [L, R]$中的所有$a_x$加上一个数$k$; 询问$\sum_{x \in [L, R]}f(a_x)$ $n \le 阅读全文
摘要:
题目大意 给定一个$n$个点, $m$条边的无向图, 每条边在一定时间范围内存在. 要你判断每个时间点这张图是否为二分图. $n \le 10^5$ $m \le 2 \times 10^5$ Solution 我们考虑一个合法的二分图有什么性质: 图中不存在奇环, 即环上边数(点数)为奇数的环. 阅读全文
摘要:
题面 Description 给定一个n个点m条边的连通图,保证没有自环和重边。对于每条边求出,在其他边权值不变的情况下,它能取的最大权值,使得这条边在连通图的所有最小生成树上。假如最大权值为无限大,则输出 1。 I nput 第一行两个整数n,m,表示n个点m条边 接下来m行,每行3个整数x,y, 阅读全文