自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YihAN_Z

ただのあほです

  • 博客(20)
  • 收藏
  • 关注

原创 BZOJ 2648 SJY摆棋子 K-D Tree

题目大意:给出平面上一些点,要求支持插入点,查询离某个点的最近点的曼哈顿距离。

2017-04-26 07:14:40 427

原创 BZOJ 1692 [Usaco2007 Dec]队列变换 后缀数组

题目大意:给出一个包含大写字母的长度为n的字符串,每次可以从字符串的首或尾取出一个字符放在新串的末尾,输出字典序最小的新串当首尾相同时,找第一个不同的位置谁小取谁,然而复杂度是O(n)的。可以将正反串中间用符号隔开连在一起,求出后缀数组,这样取rank较小的就可以了#include <cstdio>#define max(a,b) ((a)>(b)?(a):(b))#define N 60005

2017-04-17 18:45:13 368

原创 BZOJ 4399 魔法少女LJJ 线段树合并

题目大意:第一行有一个正整数m,表示操作个数。 接下来m行,每行先给出1个正整数c。 若c=1,之后一个正整数x,表示新建一个权值为x的节点,并且节点编号为n+1(当前有n个节点)。 若c=2,之后两个正整数a,b,表示在a,b之间连接一条边。 若c=3,之后两个正整数a,x,表示a联通块内原本权值小于x的节点全部变成x。 若c=4,之后两个正整数a,x,表示a联通块内原本权值大于x的节点

2017-04-14 14:43:25 474

原创 BZOJ 2989 数列 变换坐标系 主席树

题目大意:给定一个长度为n的正整数数列a[i]。 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]|。 2种操作(k都是正整数): 1.Modify x k:将第x个数的值修改为k。 2.Query x k:询问有几个i满足graze(x,i)<=k。因为可持久化数据结构的流行,询问不仅要考虑当前数列,还要考虑任意历史版本,即统计任

2017-04-14 00:04:37 531

原创 BZOJ 2555 SubString LCT 后缀自动机

题目大意:给出一个初始字符串,要求支持,在末尾添加一段字符串,查询一个串出现了几次,强制在线。构造后缀自动机,一个串出现次数等于代表这个串的状态的right集合大小。然而强制在线,right集合在添加之后会发生改变。 考虑添加一个字母时,只有产生的新状态的所有parent的right集合大小会加1,于是用LCT维护一下就好了。#include <cstdio>#include <cstring>

2017-04-12 21:45:29 348

原创 BZOJ 4756 [Usaco2017 Jan]Promotion Counting 线段树合并

题目大意:给出一棵有根树,每个点有一个权值,问对于每一个点的子树中比这个点大的点的个数。首先权值很大需要离散化。 对于每一个点建一个权值线段树。遍历每一棵子树,然后将子树的线段树合并到自己的线段树上,在查询之后将自己插入。时间复杂度O(nlog2n)#include <cstdio>#include <cstring>#include <algorithm>#define N 100005

2017-04-12 16:13:35 878

原创 BZOJ 3622 已经没有什么好害怕的了 DP 容斥原理

题目大意:给出长度为n的a,b两个序列,元素互不相同。求有多少种匹配满足ai>bi比ai< bi多m对。将问题转化一下,即求有多少种匹配其中ai>bi恰好为(n+m)/2,其余均为ai< bi。 若设状态为f(i,j)表示a序列中前i个元素匹配完恰好有j对为ai>bi,发现根本没法转移。看到计数问题可以考虑容斥。需要将状态设置得便于转移,将状态改为f(i,j)表示a序列中前i个元素至少匹配了j对满

2017-04-11 19:52:03 416

原创 BZOJ 3238 [Ahoi2013]差异 后缀自动机

题目大意: len(Ti)+len(Tj)枚举一下就好,主要是如何算sigma{lcp(Ti,Tj)}将原串反过来建后缀自动机,两个节点的lca即最长子串就是这两个节点代表的串的lcp于是枚举、DP一下即可#include <cstdio>#include <algorithm>#include <cstring>#define N 500005using namespace std;t

2017-04-10 15:13:46 423

原创 BZOJ 1858 [Scoi2010]序列操作 线段树

题目大意:给出长度为n的0/1序列,要求支持:区间赋值(0/1),区间取反,查询区间和、区间最长连续1个数。线段树练手题,今天闲来无事打算水一水,然后发现这个真的够屎..维护赋值标记、翻转标记,注意在赋值时清空翻转标记,判断好翻转与赋值的关系,细节见代码。 在赋值时记得把相反的清空(以为指针比数组快很多于是写到一半把数组改成指针,然而Rank前100都没挤进去…可能是因为我的线段树太屎了吧0.0#

2017-04-09 23:09:30 339

原创 BZOJ 3992 [SDOI2015]序列统计 NTT

题目大意: 给出一个集合S,元素都是小于m的整数。现给定整数x,求所有长度为n且每个元素都属于集合S的数列中满足数列中所有数的乘积mod m的值等于x的不同的数列的有多少乘积为定值不怎么会算,而和为定值就是一个卷积的形式,于是将数列转成其对数做加法。 数列中有n个数,快速幂即可。#include <cstdio>#include <cstring>#include <algorithm>

2017-04-07 23:14:22 473

原创 BZOJ 3779 重组病毒 LCT维护子树信息

题目大意:给定一棵树,要求支持:将某个点到根的路径染色;换根后将原来的根到现在的根的路径染色;求某个点的子树到根的平均颜色段数比较麻烦的LCT维护子树信息变量名是照neither_nor神犇抄的..意义相同,链接 因为要计算子树到根的平均颜色段数,所以要维护子树到(子树的)根的颜色段数和(Col),Splay在原树中代表的链的颜色段数(cols),子树size(rsiz)。 其实就是把子树到当前

2017-04-07 09:52:11 413

原创 BZOJ 4530 [Bjoi2014]大融合 LCT维护子树信息

题目大意:给出n个点,定义一条边的负载就是它所在的当前能够联通的树上路过它的简单路径的数量,要求支持两个操作:加边,询问边的负载。保证加边不会出现环。暴力用LCT维护子树信息。LCT维护子树信息(子树信息LCT) LCT维护边权(边权LCT) 知识点讲解#include <cstdio>#include <algorithm>#define N 100005using namespace st

2017-04-06 17:17:59 923 1

原创 BZOJ 1457 棋盘游戏 SG函数

题目大意:有一个100 * 100的棋盘,从0开始编号。棋盘上有N个Queen。两个玩家轮流选择其中一个Queen,将它跳到(Xi – k, Yi)或(Xi, Yi - k)或(Xi – k, Yi - k), 其中k > 0。一个格子里面可能出现多个Queen。先将任意一个Queen移动到(0, 0)的人获胜。问先手必胜还是后手必胜?对于每个queen可以看成是两堆石子,SG函数搞一搞就好 需要

2017-04-05 09:41:34 481

原创 BZOJ 3572 [Hnoi2014]世界树 虚树

题目大意:给出一棵n个结点的树,每条边的长度为1。q个询问,每个询问中选出m个点,所有点会从选出的点中挑一个最近的且编号尽量小的点被其管理,求每一个选出的点管理多少点每次询问在树上选择一些点的问题可以用虚树解决,能够减少扫描无用的点浪费的时间对于虚树上的点DP一下求出与这个点最近的被选出的点(记这样的点为near点)。虚树上的每一条边省略了一些在原树上的点,这些点一定是被 边的两个端点的near点

2017-04-05 08:11:55 286

原创 BZOJ 3676 [Apio2014]回文串 回文自动机

题目大意:在一个串中一个子串的权值被定义为在串中的出现次数乘以子串长度,求所有回文子串的最大权值貌似要用后缀自动机+manacher,然而有了后缀自动机就成了裸题..这里引用一下别人的文章 Palindromic Tree——回文树【处理一类回文串问题的强力工具】#include <cstdio>#include <cstring>#include <algorithm>#define N 3

2017-04-04 20:14:13 400

原创 BZOJ 3697 采药人的路径 树的点分治

题目大意:给出一棵n个结点的树,边权为1或-1,求有多少条路径边权和为0并且能在路径上找到一个在起点与重点之间的休息点(不能是起点或终点)满足起点到休息点、休息点到终点的路径边权为0不是那么裸的点分治。 首先考虑在一棵子树中如何找到边权和为0的路径。由于边权只有1和-1,和的绝对值不会超过n,记录一下权值为i的路径分别有多少条,其中i属于[-n,n]。这样i与-i组合形成的路径边权和为0。 再考

2017-04-04 00:03:17 480

原创 BZOJ 3365 [Usaco2004 Feb]Distance Statistics 路程统计 树的点分治

题目大意:给出n(n<=50000)个结点的树,求有多少条路径长度不超过K求解有关树上的路径问题可以使用树的点分治。算法流程: 1.选取当前子树的重心,将无根树转为有根树 2.处理过当前根的路径对答案的贡献 3.标记根节点,表示删除根节点 4.递归处理每一个子树#include <cstdio>#include <cstring>#include <algorithm>#define

2017-04-02 22:49:13 335

原创 BZOJ 1741 [Usaco2005 nov]Asteroids 穿越小行星群 二分图最小覆盖

题目大意:在n*n的矩阵上有一些点,每次可以删除一行或一列上的所有点,问消除所有点的最小删除次数。每个点要么被行删除,要么被列删除。建立二分图,对于点(x,y),从左边x到右边y连一条边,对于每一条连边,必须选择两边端点中的一个,所以二分图最小覆盖即为答案。 结论:二分图最小覆盖等于最大匹配(证明见百度百科Konig定理)#include <cstdio>#include <cstring>#

2017-04-02 08:57:10 706

原创 BZOJ 3221 [Codechef FEB13] Obserbing the tree树上询问 树链剖分 主席树维护区间加等差数列

题目大意:给出一棵树,每个结点初始均为0,要求支持以下操作:路径加等差数列,询问路径上结点权值和,回到之前的某个版本调到吐血。很明显可以看出需要树链剖分+主席树来解决,由于需要在主席树上区间修改所以标记永久化。 区间维护等差数列需要在每个结点上维护 首项 和 公差。 树链剖分时在路径上加等差数列需要讨论,细节比较多,详见代码。 (我看错题了..注意回到某个版本并不舍弃在这之间的版本)#incl

2017-04-02 00:15:30 714

原创 BZOJ2321 [BeiJing2011集训]星器 能量守恒定律

题目大意:在一个二位矩阵上有一些星器,把两个不相邻的星器互相靠近一格会产生两个星器距离的能量,给出始末状态,求产生的最大能量。以前偶然间看过这道题的题解,用到了能量守恒定律 在neither_nor看这道题的时候我告诉他这道题是物理以后就滚回去看了题解… 他自己推出来了一个和网上都不一样的做法,果然是神犇,%%%可以把两个星器的移动以后产生的能量看成是移动消耗的能量,这样根据能量守恒,计算出始末

2017-04-01 18:32:02 634

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除