随笔分类 -  I-数据结构-线段树

摘要:Link: 传送门 Solution: 以前没见过的套路题…… 1、使用EXT欧拉定理降幂的套路: $a^{x}=a^{xmod\phi(P)+\phi(P)} mod P$,且$x\ge P$ 这样对于$c^{c^{c^x}}modP$就能递推/递归得套用上述定理计算,每层模数多套一层$\phi$ 阅读全文
posted @ 2018-11-23 17:41 NewErA 阅读(256) 评论(0) 推荐(0)
摘要:Link: Codeforces 1053C 传送门 Solution: 先推出一个结论: 最后必有一个点不动且其为权值上最中间的一个点 证明用反证证出如果不在中间的点必有一段能用代价少的替代多的 这样问题转换为求出区间第一个大于权值和一半的点,并求结果 如果只考虑半边的结果为$\sum_{i=1} 阅读全文
posted @ 2018-09-26 10:42 NewErA 阅读(385) 评论(2) 推荐(0)
摘要:Link: 传送门 可能要补一补之前的题了 题目名字天(Sky)的(De)炭(C)好评啊…… A: 从买/卖物品的配对来考虑: 可以发现如果当前物品为卖,肯定从之前选最小的(无论其为买/卖),因为贡献都是差值! 如果要买的物品当前状态为卖,那么相当于将那条匹配链的卖的那一端转换 用优先队列维护$pa 阅读全文
posted @ 2018-09-18 10:55 NewErA 阅读(240) 评论(2) 推荐(0)
摘要:Link: Codeforces #172 传送门 A: 一眼看上去分两类就可以了 1、每个矩形只有两条边相交,重合的形状为菱形 2、每个矩形四条边都有相交 对于情况1答案为$h*h/sin(a)$ 对于情况2可以列出一个二元一次方程组,手动解一下就好了 不过计算几何确实容易写挂啊…… 有几个注意点 阅读全文
posted @ 2018-08-25 16:54 NewErA 阅读(280) 评论(0) 推荐(0)
摘要:Link: ARC063 传送门 C: 将每种颜色的连续出现称为一段,寻找总段数即可 #include <bits/stdc++.h> using namespace std; int cnt=0,len; char s[100005]; int main() { scanf("%s",s+1);l 阅读全文
posted @ 2018-07-10 21:12 NewErA 阅读(228) 评论(0) 推荐(0)
摘要:Link: BZOJ 2752 传送门 Solution: 虽然有期望,但实际上就是除了个总数…… 此题计算总代价明显还是要使用对每个$w_i$计算贡献的方式: $w_i的贡献为w_i*(i-l+1)*(r-i)$(左端点的方案数乘上右端点的方案数) 为了能使维护的数据符合$RMQ$的性质,我们要将 阅读全文
posted @ 2018-07-09 08:27 NewErA 阅读(152) 评论(0) 推荐(0)
摘要:Link: BZOJ 1805 传送门 Solution: 一道思路比较巧的线段树的题目 首先可以发现,答案和顺序是没有关系的,都是$\sum_{i=1}^n {H_i∗(H_i−1)/2}$。 那么可以比较容易得得到以下的贪心策略: 对于第$i$个船帆,对前$H_i$层中的前$K_i$小的数加1 阅读全文
posted @ 2018-05-31 07:25 NewErA 阅读(388) 评论(0) 推荐(0)
摘要:Link:https://www.lydsy.com/JudgeOnline/problem.php?id=3110 Solution: 一道树套树的题,外层是权值线段树,里层是区间线段树。 对于权值线段树的节点 u 表示权值区间 [l, r),其对应的区间线段树的节点 v 表示序列 [l1, r1 阅读全文
posted @ 2018-05-25 11:04 NewErA 阅读(235) 评论(0) 推荐(0)