
数据结构
文章平均质量分 82
whzzt
这个作者很懒,什么都没留下…
展开
-
[BZOJ1758] [WC2010] 重建计划 - 树分治
1758: [Wc2010]重建计划Time Limit: 40 Sec Memory Limit: 162 MBSubmit: 2178 Solved: 700[Submit][Status][Discuss]DescriptionInput第一行包含一个正整数N,表示X国的城市个数. 第二行包含两个正整数L和U,表示政策要求的第一期重建方案中修建道路数的原创 2016-07-02 19:13:18 · 1220 阅读 · 3 评论 -
[BZOJ4520][CQOI2016] K远点对 - KD-tree
4520: [Cqoi2016]K远点对Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 563 Solved: 295[Submit][Status][Discuss]Description已知平面内 N 个点的坐标,求欧氏距离下的第 K 远点对。Input输入文件第一行为用空格隔开的两个整数 N, K。原创 2016-06-28 15:58:48 · 883 阅读 · 0 评论 -
[BZOJ2152] 聪聪可可 - 树分治
2152: 聪聪可可Time Limit: 3 Sec Memory Limit: 259 MBSubmit: 1839 Solved: 959[Submit][Status][Discuss]Description聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃、两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般原创 2016-07-02 18:52:20 · 364 阅读 · 0 评论 -
[BZOJ4034] [HAOI2015] T2 - 树链剖分
总觉得这个树剖写得不爽 - -这应该算树剖模板题吧qaq#include"bits/stdc++.h"using namespace std;typedef long long ll;const int N=100005,LG=20;vectore[N];int beg[N],n,dfn[N],bel[N],size[N],deep[N],val[N],fa[N][LG],c原创 2016-08-01 12:13:56 · 289 阅读 · 0 评论 -
[BZOJ4515][SDOI2016] 游戏 - 树链剖分 - 半平面交 - 标记永久化
4515: [Sdoi2016]游戏Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 390 Solved: 177[Submit][Status][Discuss]DescriptionAlice 和 Bob 在玩一个游戏。游戏在一棵有 n 个点的树上进行。最初,每个点上都只有一个数字,那个数字是 12345678912原创 2016-08-08 17:55:34 · 563 阅读 · 0 评论 -
[BZOJ4519] 不同的最小割 - 分治,最小割(Gomory-Hu Tree)
题目大意:求一张图的不同的最小割个数。这里我们用Gomory-Hu Tree的思想但却并不需要建立那样的一棵最小割树。首先我们要知道最小割不会相互跨立(ZZT不会证233),然后就可以每次随机选取两点,求出最小割后分治两边的点集即可,根据最大流最小割定理,直接跑一遍dinic就可以了。时间复杂度上界O(n^2mlog n),实际复杂度完全可以接受。#include"bits/stdc++.原创 2016-08-10 17:42:00 · 1333 阅读 · 0 评论 -
[BZOJ4523] [CQOI2016] 路由表 - Trie - 单调栈
对于加入就直接跑一遍在最后的结点标记时间就行了,询问就是将整个段维护一个单调栈,保证每个时间所在的位置之后没有比其小的时间即可,具体看代码。#include"bits/stdc++.h"using namespace std;const int L=40000005;char _buff[L];int _pos;void read(){fread(_buff,L,1,stdin);}原创 2016-08-12 22:45:31 · 434 阅读 · 0 评论 -
整体二分&CDQ分治:[BZOJ2527][POI2011] meteors [BZOJ3295][CQOI2011] 动态逆序对
首先我们先说说3295题的树套树做法:显然只需要求出每次修改x左边比自身大的数的个数和右边比自身小的个数,就是x的贡献,每次减去贡献再删除x即可,这样就相当于带修改的可持久化线段树就能解决问题。显然,我们用树状数组套权值线段树来解决这个问题,每次修改就相当于修改棵可持久化线段树上的一个权值,所以在修改上总的时间复杂度是,下面来考虑查询。我们每次查询显然可以分成段,这样我们显然可以来完成所有的查原创 2016-08-15 23:00:55 · 619 阅读 · 1 评论 -
[BZOJ3262] 陌上花开 - CDQ分治
对第一关键字排序,分治每朵花,合并的时候通过归并左右的花的第二关键字,将值插入树状数组中求值。对于相同的花,先进行预处理即可。#include"bits/stdc++.h"#define lowbit(x) ((x)&-(x))using namespace std;const int N=100005,M=200005;int n,m;int sum[M];inline v原创 2016-08-21 21:42:57 · 477 阅读 · 0 评论 -
[BZOJ2049] [SDOI2008] 洞穴勘测
LCT模板题。#include"bits/stdc++.h"using namespace std;const int N=10005; struct node{ node *fa,*c[2];bool rev;node(); inline bool go(){return fa->c[0]==this||fa->c[1]==this;} inline void pushdown原创 2016-08-22 19:24:22 · 257 阅读 · 0 评论 -
[BZOJ4028] [HEOI2015] 公约数数列 - 分块
大分块是nsqrt(n)logn的qwq#include"bits/stdc++.h"#define mmap map::iterator#define mpar make_pair#define fge getchar()using namespace std;typedef long long ll;templatevoid read(MyInt&x){ x=0;cha原创 2016-08-25 21:28:02 · 516 阅读 · 0 评论 -
清华集训2017题解
ioi赛制好评QAQ好像啥都记不得了就不写游记了Day 11.1 生成树计数(tree.cpp)1.1.1. 题意 有 n≤30000n≤30000 n \le 30000 个点,第 ii i 个点有点权 aiai a_i ,设第 ii i 个点的点度为 didi d_i ,那么求求所有生成树的权值和。一个生成树的权值 w(T)w(T) w(T)...原创 2018-02-12 21:43:44 · 2313 阅读 · 0 评论 -
[BZOJ4537] [HNOI/AHOI2016] 最小公倍数 - 分块 - 并查集
考场爆零很是不爽……好吧讲道理这题其实很裸4537: [Hnoi2016]最小公倍数Time Limit: 40 Sec Memory Limit: 512 MBSubmit: 575 Solved: 243[Submit][Status][Discuss]Description 给定一张N个顶点M条边的无向图(顶点编号为1,2,…,n),每条边上带有原创 2016-06-20 23:03:00 · 1049 阅读 · 0 评论 -
[BZOJ3626] LCA - 离线 - 树链剖分/动态树/分块
大雾啊……BZOJ上是10s题到了我校OJ就成了100MS每点 目测这是要写树剖+BIT的东西……窝LCT卡常数卡了好久都没艹过去,BZOJ都稳稳前两页了…… 好伐还是说题解吧…… 首先我们可以离线将所有回答排序。首先我们用前缀和思想,即Ans[l,r]=Ans[1,r]-Ans[1,l-1] 然后我们可以发现,我们每次处理的就是对应的z关于1原创 2016-06-10 22:57:18 · 375 阅读 · 0 评论 -
[BZOJ2002] [HNOI2010] 弹飞绵羊 - Link-Cut-Tree (LCT)
LCT绝对的模板题啊(黄学长一开始用分块写的感觉很高端啊%%% 呐……LCT写起来也是很简单的啊……根本不用维护一些其他的东西,只要最基本的操作。询问都不用别的直接makeroot然后access然后splay就好…… 好吧具体看代码。建议在最后加一个点n+1(感觉不加我就不会写#include "algorithm"#include "iostream"原创 2016-06-07 16:25:53 · 351 阅读 · 0 评论 -
[ZJOI2008] [BZOJ1036] 树的统计Count
这个就不多说了,树链剖分模板题。#include "stdio.h"#include "math.h"#include "iostream"#include "string.h"#include "vector"using namespace std;const int N=30005,Lg=14,inf=(int)(2e9);int n,tmp;int fa[N][Lg+1]原创 2016-02-27 14:28:04 · 353 阅读 · 0 评论 -
[JSOI2008] [BZOJ1012] 最大数maxnumber - 单调栈
1012: [JSOI2008]最大数maxnumberTime Limit: 3 Sec Memory Limit: 162 MBSubmit: 7098 Solved: 3044[Submit][Status][Discuss]Description现在请求你维护一个数列,要求提供以下两种操作: 1、 查询操作。语法:Q L 功能:查询当前数列中末尾L个数中的最大的原创 2016-03-12 22:41:25 · 402 阅读 · 0 评论 -
[BZOJ2809] [APIO2012] dispatching - 可并堆
2809: [Apio2012]dispatchingTime Limit: 10 Sec Memory Limit: 128 MBSubmit: 2366 Solved: 1209[Submit][Status][Discuss]2809: [Apio2012]dispatchingTime Limit: 10 Sec Memory Limit: 128 MB原创 2016-04-09 19:26:40 · 356 阅读 · 0 评论 -
[BZOJ1208] [HNOI2004] 宠物收养所 - splay
1208: [HNOI2004]宠物收养所Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6675 Solved: 2621[Submit][Status][Discuss]Description最近,阿Q开了一间宠物收养所。收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。每个领养者都希望领养到自己满意的宠原创 2016-04-09 19:50:01 · 474 阅读 · 0 评论 -
[BZOJ2653] middle - 主席树(可持久化线段树) - 二分
2653: middleTime Limit: 20 Sec Memory Limit: 512 MBSubmit: 1046 Solved: 599[Submit][Status][Discuss]Description 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整。 给你一个长度为n的序列s。原创 2016-04-09 19:52:09 · 700 阅读 · 0 评论 -
[NOI2005] [BZOJ1500] 维修数列 - splay
前段日子一直在看LCT QWQ。照着板子A了魔法森林但是感觉还是不是太明白,神犇告诉我说应该先把splay学好然后码了几天找了N处错误才A了这题 splay大模板题啊。虽然程序跑得不很快,但是总算AC了qwq。 注释里面有一些提示,就是我错的地方qwq,提醒大家注意哈。 #include "algorithm"#include "iostream"#include "std原创 2016-04-24 22:55:00 · 558 阅读 · 0 评论 -
[BZOJ4195] [NOI2015] 程序自动分析 - 并查集 + 离散化
辣鸡题啊QAQ然而我交了好几次#include "algorithm" #include "iostream"#include "stdio.h"#define rep(f,a,b) for(f=a;f<=b;f++)using namespace std;const int N=1000005;inline int read(){ int v=0; char ch=getc原创 2016-05-08 23:22:16 · 432 阅读 · 0 评论 -
[BZOJ3224] 普通平衡树 - splay
事实证明我写了这么久的数学题 splay没有下降水平TAT#include"stdio.h" #include"iostream"using namespace std;const int inf=(int)1e9;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=ge原创 2016-05-14 14:06:43 · 301 阅读 · 0 评论 -
[BZOJ3223] 文艺平衡树 - splay
验证了一发自己还有水平之后就懒得写了 直接上维修数列那题的模板TAT#include "algorithm"#include "iostream"#include "stdlib.h"#include "stdio.h"#include "math.h"using namespace std;const int inf= (int)1e9,N=100005;inlin原创 2016-05-14 14:19:55 · 747 阅读 · 0 评论 -
[BZOJ4423] [AMPPZ2013] Bytehattan - 平面图 - 并查集
一直不知道BZOJ的XXXX题为什么错了…… 日哦……那题调了一周了……然后现在对拍都没找到错…… 然后自我感觉不能颓!于是水了一道并查集题……4423: [AMPPZ2013]BytehattanTime Limit: 3 Sec Memory Limit: 128 MBSubmit: 146 Solved: 104[Submit]原创 2016-05-21 12:34:40 · 498 阅读 · 0 评论 -
[BZOJ3529] [SDOI2014] 数表 - 莫比乌斯反演 - 树状数组
具体怎么反演的请看POPOQQQ大爷的莫比乌斯反演论文TATATAT然后注意,当用到函数F(i)的时候再将函数筛入树状数组里。。时间复杂度O(n log^2 n+q√n log n)如果不自然溢出会慢很多TAT#include "stdio.h"#include "iostream"#include "algorithm"#include "stdlib.h"#includ原创 2016-05-30 20:05:17 · 349 阅读 · 0 评论