随笔分类 -  middle 数据结构,DP

摘要:筛法+划分树。枚举因子,类似筛法计算因子数量,复杂度为n/2 + n/3 + ... + n/n ≈O(nlogn)。值域已知,只有删除操作,寻找kth,用划分树就好了O(nlogn)。二分+树状数组也可以,只是复杂度多乘一个logn。/*******************************... 阅读全文
posted @ 2015-12-09 00:21 陈瑞宇 阅读(218) 评论(0) 推荐(0) 编辑
摘要:相交区间选尽量少的点是可以贪心的,右端点排序以后,尽量往右边放可以得到可以使得点在区间尽可能多。但是我只想到了O(n)的维护方法。(数据比较水,能过...或者是前缀和可以写sum(bi) - sum(ai-1)≥ ci再加上前缀和的单调性 sum(i) - sum(i-1)≥ 0以及一个点只能选一次... 阅读全文
posted @ 2015-11-30 10:30 陈瑞宇 阅读(423) 评论(0) 推荐(0) 编辑
摘要:小鸟往四个方向飞都枚举一下,数据范围没给,离散以后按在其中一个轴线排序,在线段树上更新墙的id,然后就是点查询在在哪个墙上了。这题有个trick,因为数据范围没给我老以为是inf设置小了,WA了很多发。(距离可能比0x3f3f3f3f大实现上,我是把鸟和墙的坐标放一起的,用下标来区别两者。/****... 阅读全文
posted @ 2015-11-29 12:56 陈瑞宇 阅读(434) 评论(0) 推荐(0) 编辑
摘要:不存在-1的情况,而且最多一轮就结束了。如果新增加的黑点v0会产生新的黑点v1,那么v0和v1肯定是在一条轴上的,而原来这条轴上已经有黑点了。离散以后扫描线统计,往线段上插点,然后查询区间上点数。不妨以x为主轴,用一条条平行于y轴的线去扫。按照x为主y为副排序以后,记录下标,将下标按y为主排序,为的... 阅读全文
posted @ 2015-11-29 12:32 陈瑞宇 阅读(532) 评论(0) 推荐(0) 编辑
摘要:BIT更新一个区间的前缀和是很容易的,modify操作修改的是[x,N]的所有前缀和(也就是修改的是一个后缀)。二维的也是容斥一下就好了。对于查询的(x,y),回答前缀和(x,y)就好了。/*******************************************************... 阅读全文
posted @ 2015-11-29 11:19 陈瑞宇 阅读(157) 评论(0) 推荐(0) 编辑
摘要:题目的数学模型:求,和号:|Xi-Xj|*max(Vi,Vj),i != j.按照大小顺序枚举可以处理取max的问题,假如从小到大枚举到Vi,对另外一部分,XXi的情况,维护一下总和减一减。#include#include#include#include#include#include#includ... 阅读全文
posted @ 2015-11-28 01:41 陈瑞宇 阅读(177) 评论(0) 推荐(0) 编辑
摘要:dp[i = 前i中sorter][j = 将min移动到j位置] = 最短的sorter序列。对于sorteri只会更新它右边端点r的位置,因此可以把数组改成一维的,dp[r] = min(dp[r],dp[j]+1), l≤j#include#include#include#include#in... 阅读全文
posted @ 2015-11-07 16:45 陈瑞宇 阅读(347) 评论(0) 推荐(0) 编辑
摘要:矩阵乘法是可以分块的,而且幂的和也是具有线性的。不难得到Si = Si-1+A*Ai-1,Ai = A*Ai-1。然后矩阵快速幂就可以了。/********************************************************** ----------... 阅读全文
posted @ 2015-11-07 16:34 陈瑞宇 阅读(277) 评论(0) 推荐(0) 编辑
摘要:定义ai表示红色和绿色方块中方块数为偶数的颜色有i个,i = 0,1,2。aij表示刷到第j个方块时的方案数,这是一个线性递推关系。可以构造递推矩阵A,用矩阵快速幂求解。 1 /********************************************************* 2 *... 阅读全文
posted @ 2015-11-07 16:19 陈瑞宇 阅读(275) 评论(0) 推荐(0) 编辑
摘要:一道比较经典的数据结构题。可以用多种方式来做。一,分桶法(平方分解)。根据数字x的大小和区间内不大于x的数字数量cnt的单调性,可知第k大数kth对应的cnt应该满足cnt≥k,且kth是满足条件的最小的一个,可以二分下界。关键在于高效找出cnt,对于每个完整的桶,排序以后二分,不完整的桶就直接暴力... 阅读全文
posted @ 2015-11-07 15:30 陈瑞宇 阅读(368) 评论(0) 推荐(0) 编辑
摘要:今天来学习一下怎么用BIT区间更新的,BIT速度比线段树速度更快,也更好写。我们来看一下当给区间[l,r]整体加上一个常数c会前缀si发生什么变化?i #include#include#include#include#include#include#include#include#include#i... 阅读全文
posted @ 2015-11-07 14:11 陈瑞宇 阅读(394) 评论(0) 推荐(0) 编辑
摘要:很自然会想到是线段树,需要考虑维护什么信息。我们需要的答案是从原点到末端的坐标,这个信息可以看出是多个向量相加,所以我们在子区间维护左端点到右端点的一个向量。因为角度会发生改变,那么再维护一个左右区间之间的角度。那么父节点的向量就等于左孩子的向量加上右孩子旋转以后的向量。对于修改si和si+1之间的... 阅读全文
posted @ 2015-11-07 13:32 陈瑞宇 阅读(287) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示