05 2019 档案
摘要:题目条件 给定一些区间(n)的左右端点,在整数集合上进行覆盖。 【水题一】 双倍经验提交来这里。 求被覆盖次数不少于给定次数的段(定义为数轴上相邻两整数之间的距离为一段)有多少个。 解法一: 试图用map水过,map的建值对表示在当前值上被覆盖的次数,利用差分,实际是扫描线的思想在里面了,无需离散化
阅读全文
摘要:【原题题面】传送门 【题解大意】 *衡树模板题。 左旋右旋使数尽量满足左右子树相当的情况。 随机化权值是因为在随机数据下BST趋*于*衡。 同时要维护子树大小和样本容量来回答询问。 具体实现看代码。 【code】 #include<bits/stdc++.h> using namespace std
阅读全文
摘要:【原题题面】传送门 【题解大意】 将点放入一个数组中按深度排序,用指针扫描,求深度值相加满足条件的点数。 还需要维护该子树内满足条件的点, 因为同一子树内的亮点之间的距离不需要用到根节点的深度值。 【code】
阅读全文
摘要:点分治 概述 通过求树的重心来给无根树找到一个根。 使得分出的子树的结点个数均不大于n/2,使每次点分治删点后联通块大小减少至少一半。 保证递归层数最多logn。 总复杂度O(nlogn)。 不考虑路径修改 【练习题】 【POJ 1741】Tree 【IOI2011】Race 【SPOJ 1825】
阅读全文
摘要:【原题题面】传送门 【题解大意】 莫队。这题未免太果。 【code】 #include<bits/stdc++.h> using namespace std; #define File "" #define ll long long #define ull unsigned long long in
阅读全文
摘要:【原题题面】传送门 【题解大意】 用来练莫队,但是莫队开了O2才苟过去。 动态维护区间内的种类,开cnt[]记录一下便于判断。 【code】 //莫队 #include<bits/stdc++.h> using namespace std; #define File "" #define ll lo
阅读全文
摘要:【原题题面】传送门 【题解大意】 都说了是莫队练习题。 考虑已知[l,r]区间的mex值时,如何求[l+1,r]的mex值。 比较a[l+1]与已知ans的大小,如果a[l+1]>ans或者a[l+1]<ans,均对答案没有影响。 如果a[l+1]==ans,考虑找到一个比当前ans更大且出现次数为
阅读全文
摘要:本质 一种离线算法。思路比较自然。 适用范围 1.题目允许离线。 2.能以较低的时间复杂度拓展区间。 3.没有修改或者修改不是那么烦。 4.基于分块思想来进行优化,分块复杂度不行它也GG。 概述 已知区间[l,r]的答案时,将答案扩展到[l+1,r][l-1,r][l,r+1][l,r-1]区间。
阅读全文
摘要:【原题题面】传送门 【题解大意】 莫队入门。 看这里。 或者直接看代码。 要分别维护分子和分母,这个比较特殊。 还有这个题不是第一次写了,上一次写疯狂TLE,洛谷上开了O2才过。 这次写没有将每一个点属于哪个块的信息储存,所以跑得飞快。 写法get。 【code】 #include<bits/std
阅读全文
摘要:故事是这样的,辣鸡我被要求写dfs序,前置技能是树上差分,然后只好十分不情愿地学习了一下。 差分 差分数组(b):原数组(a)中相邻的差构成的数组。(b[i]=a[i]-a[i-1],b[1]=a[1]) 性质:其前缀和为原数组。(b[2]=a[2]-a[1],b[3]=a[3]-a[2],b[i]
阅读全文
摘要:【原题题面】传送门 【思考过程】 树剖板子。 说好了这题写Dfs序。 好我已经看出来了这题用树状数组不是很好搞。 opt1:单点修改 opt2:区间修改 opt3:“区间查询” 从根节点到x的路径上的点在dfs序上的表现是:时间戳便利到当前结点,只有in还没有out,即只进入对应的子树还没有返回到自
阅读全文
摘要:【原题题面】传送门 【题面大意】 给出每颗星星的坐标和亮度,在h,w的矩形范围内,内圈住的星星的最大亮度和。(边界上的星星不算) 【题解大意】 如何转化成扫描线问题?将每个星星能够产生贡献的范围设为矩形星星位于产生贡献的矩形的某个固定位置这样产生贡献的计算才不重不漏。 具体操作: 同样将每颗星星的用
阅读全文
摘要:【原题题面】传送门 【题面大意】 给出N个矩形,求矩形的面积并。 【题解思路】 线段树扫描线入门题。 实现的一些细节: 存边的信息用结构体,根据x的大小排序 从每段的y值的开始操作 线段树维护的是段的信息 该段被覆盖了几次 左端点贡献为1(左端点以后的线段都是正贡献),右端点贡献为-1(右端点以后的
阅读全文
摘要:【原题题面】传送门 【题面翻译&题解大意&code】传送门 没错我就是为了凑一篇博客,嗝。
阅读全文
摘要:写在前面 【概况】 时间四小时,总五题,写了三个题。 【时间分配】 看题花了很久(30min+),总体上做题顺序 5->3->1(->4)。 【问题】 1.抓不住动态规划状态的设置,每个阶段子结构之间的关系。 2.总是YY出一些奇奇怪怪能过样例的奇怪贪心。 3.一点也没用到这几天学的dp新姿势...
阅读全文
摘要:【题目描述】 有一个N*N矩阵,给出一系列的修改和询问,修改是这样的:将(x,y)中的数字加上k,而询问是这样的:求(x1,y1)到(x2,y2)这个子矩阵内所有数字的和。 【输入格式】 输入数据第一行为一个正整数N。 接下来不知道多少行,每行第一个数为操作类型,1为修改,2为询问,3为程序结束。
阅读全文
摘要:由于近日一个人呆机房较多,没什么人陪我聊天,一些无聊的话全写博客里了,见谅。 【题目描述】 假设有一列数 {Ai }(1 ≤ i ≤ n) ,支持如下两种操作: (1)将 A k 的值加 D 。( k, D 是输入的数) (2) 输出 A s +A s+1 +…+A t 。( s, t 都是输入的数
阅读全文
摘要:【原题链接】传送门 【题解大意】 三个月之前学cdq分治的时候水过去了,三个月之后我连cdq分治是啥都忘了。 其实实现还是简单的吧,然而某傻逼还是调了好久,最后心态崩掉重码一遍的时候突然发现小于号是不是定义错了。莫队。。。 【code】 #include<bits/stdc++.h> using n
阅读全文
摘要:【题目链接】传送门 【写在前面】 先写了个n^2的简单dp,这永远都是写题的第一步。 状态开始会想到要设置成到第i个玩具分成了j批,但是并不知道分成多少批。 直接将状态设置为分到第i个玩具的最小花费,这个类似任务安排里将三维的n^3变成一维的n^2。 【code】 #include<bits/std
阅读全文
摘要:【题目链接】传送门 【调试出错】 写了第一遍怎么调都不过,气得想摔键盘。 冷静去上了两节文化课回来又码了一遍,然后就一遍过了。 【题解大意】 这个题目给的是森林,我们构建虚拟节点0使之变成一棵树。 f[x,t]表示以x为根的子树中选择t门课程能获得的最高学分。设x的子节点集合为son[x]。 【co
阅读全文
摘要:【原题链接】传送门 【调试出错】 我代码里的for循环一般用define rep 这里循环(vector)son的下标时(0,son[x].size()-1)出错了 问题未知。 【code】 #include<bits/stdc++.h> using namespace std; #define F
阅读全文

浙公网安备 33010602011771号