
数据结构
xyc1719
努力会说谎,但努力不会是白费
展开
-
树套树学习笔记
题目:传送门这是第一类入门级的树套树,线段树/树状数组套平衡树。用线段树或树状数组维护区间,再用平衡树维护对区间中的动态修改。有人可能会疑惑为什么为每个区间开一棵平衡树不会MLE呢?我们以线段树为例,每一层的线段树的节点数都为n,至多有logn层。为每一个区间开一棵和区间大小相同的平衡树,总的平衡树大小只会在nlogn左右。...原创 2018-11-01 18:54:19 · 5304 阅读 · 0 评论 -
排名【二分答案】【数据结构+模拟】
【一句话题意】给定n个人的初始位置,再给出每个人的速度,问在无限长的跑道上前m次“追赶事件”(一个人超过另一个人)n,m<=1e5【分析】这道题二分答案乱搞,先二分时间,再归并排序求逆序对,然后有个不强和另一个超强的剪枝。(弱)如果二分出的mid,求得的逆序对个数等于m,则跳出循环。(强)如果逆序对个数已经大于m了,则结束归并排序。std是说,用链表模拟(或者说维护?)相对位置,再用优...原创 2018-11-06 16:03:48 · 179 阅读 · 0 评论 -
决赛 【数据结构】【排序】【贪心】
【一句话题意】题目大意:有 题目大意:有 N类询问 区间 [l[i],r[i]]各 s[i] 个。有 M类可用区间 [l[i],r[i]]各t[i] 个,现在要对每个询问区间配对上一个包含它的可用区间。n,m<=4e5【分析】先按左端点排序n+m个区间(当节点数相同时可用区间在前),如果是可用区间相当于在ri点添加了ti个点。如果是询问区间,则贪心删去在ri点及其右边的si个后继,如果不...原创 2018-11-06 16:19:21 · 142 阅读 · 0 评论 -
作画鬼才
【题意】给出一幅原图,接下来有k幅图,每一幅都是在原图上选取一个矩形将他们改为同一个颜色,问以那幅画为标准的差异值最小【分析】大致思路是“在一个二维平面有大量修改,求修改后的统计结果“。既然有大量修改,又可以离线回答统计结果,何不用差分呢(抱歉,这里是二维的)。差分表示到(i,j)颜色为k的修改有几个,nm跑一遍就可得到(i,j)有几个点修改为颜色k,加上原图中未被修改的部分就是(i,j)颜色为...原创 2018-11-04 16:06:41 · 195 阅读 · 0 评论 -
思考熊的马拉松 running.cpp
【一句话题意】给n个点,每个点速度不一地在长为A圆形跑道上跑步,当最快点跑完L圈时,问发生了多少次套圈。【分析】可以根据最快点,算出所有点的跑的圈数和不到一圈的部分。先根据每个人跑的圈数求出大致意义上的套圈数。又考虑到有可能在剩余部分中也存在套圈,求剩余部分比第i小的点的个数加上就是答案,查询时用离散化后的树状数组(或线段树),总复杂的为O(nlog2n)O(nlog_2n)O(nlog2n)...原创 2018-11-05 15:01:15 · 427 阅读 · 0 评论 -
朋友
【简要题意】每个人手上写着4个互不相同的数。如果两个人至少有一个数字相同,则他们是一对朋友。现在这n个人按序号从左到右排成了一排,每个人都想知道在他左边有多少个人是他的朋友。n<=1e5,所有数字均是不大于50的非负整数。【分析】发现数字的范围很小,所以我们可以考虑枚举数字求朋友数,但发现存在重复统计的情况。再次考虑这种算法,相当于求前面的数字关于这四个数的全集。所以用容斥原理加加减...原创 2019-02-16 15:20:57 · 201 阅读 · 1 评论 -
弹药分配
【简要题意】原先有一个序列各有一定的值。有5e4个操作,分两种:1.在选取一个区间【a,b】,并给出一个值k,区间上如果编号i 满足(i- a) % k = 0 就加上c。(k<=10)2.询问序列中某个数的当前值。【分析】对于k较小,且序列长度<=5e4的情况,我们可以分模数和余数建K2个树状数组。询问时将这些修改相加。【code】#include<cstdio&g...原创 2019-02-17 13:39:03 · 264 阅读 · 0 评论 -
卡内存
【简要题意】给一个长度为n序列。进行m次如下操作:1.add x k:给a[x]加上k。2.ask x y:查询区间[x,y]内所有数的和。3.goto t:回到第t次操作之后的状态。n,m<=1e5。特别注意:空间限制为8MB【分析】由于题目背景中出现了可持久化线段树,又有回退到历史版本的操作,所以很多人试图如题目所说的那样卡可持久化的内存。事实证明是卡不过的。这里有一种神奇...原创 2019-02-24 14:55:42 · 10519 阅读 · 0 评论