随笔分类 - ACM—数据结构
摘要:Codeforces 780 F2. Promising String (hard version) (树状数组) 题目 题目大意是一个字符串,每项为- 或者 +,如果-,+个数一样这个字符串是平衡的。你能进行操作:将两个相邻的-转变成+,如果一个字符串能通过操作变成平衡的被称为 “有希望平衡的”
阅读全文
摘要:2020牛客暑期多校(七) C - A National Pandemic(树链剖分) 参考博客 题意: 一棵树支持3种操作: 1 x w, 给x点加w,其它点y加 \(w-dist(x, y)\). 2 x, 将x权值变为$min(0, f(x)) $; 3 x, 查询x的权值$f(x)$ 分析:
阅读全文
摘要:树链剖分练习题 洛谷补题链接 P3038 USACO11DEC]Grass Planting G /* 2020/8/17/8:34 树链剖分:含点权转边权处理。 */ #include<bits/stdc++.h> using namespace std; #define rep(i, a, n)
阅读全文
摘要:题目链接 题目: 给你两个数组a[], b[],对第一个数组你可以选择任意一个区间[l,r]进行从小到大排序。问能不能将a数组经过多次操作变成b数组。 题解: 首先,我们能发现一个数要向前移动,只能前面的数比它大时才可以向前移。所以要想把a变成b相当于用a中的数构造b,扫一遍b对每一位b[i],在a
阅读全文
摘要:参考博客 题目🔗 题意: 一个s串满足s[i] = i % 10,给出p,d数组的构造方法,每次将s串p[i]位换成d[i], 总共得到n + 1个串,对它们进行排名。第i次操作后的排名为r[i]; 输出 \((\sum_{i=0}^{n}(r_{i}*10000019^{i}))\%(1e9+7
阅读全文
摘要:Treap/平衡二叉树 蓝书习题:普通平衡树 这道题是一道平衡树模板题,可以用多种解法,这里用最简单的Treap,下面简单说一下各种操作的思路 添加 : 当要添加一个值时,先判断所要加入的以p为根节点的子树是否为空,为空添加新的节点:New(val)。 当然平衡树,当加入新节点后,子节点dat变得大
阅读全文
摘要:对扫描线步骤的理解: 1:首先要保存所有的边,并按照x值从小到大排序,如果是左边,标记为1,如果是右边,标记为 1。 struct line { double from,to,x;//边起点y坐标,终点y坐标,x坐标 int flag; //左右边标记 } 2:扫描线从左往右扫描,每遇到一条边就停下
阅读全文

浙公网安备 33010602011771号