线段树
Hillan_
An OIer From ZJ
展开
-
BZOJ1901: Zju2112 Dynamic Rankings
第一次外层套权值线段树每次用splay提取区间然后在线段树上二分即可一开始想打替罪羊 后来。。差点砸电脑 还是splay好写#include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #include<map> using namespace std;struct Node { Node *lc,*r原创 2016-03-18 21:23:25 · 400 阅读 · 0 评论 -
Hackerrank How many substrings
好难啊QAQ 今天又去想了一下 然后向敦爷求证了一下 发现思路还是对的代码太难实现了。。 LCT维护last并在Segment Tree上更新。。。 感觉自己被日死了 最后看着板子打了一发。。 先离线 考虑每个串在最后出现的开始位置有贡献 然后就是一个区间加 区间减的操作 在Access的时候更新线段树 时间复杂度O(nlognlogn)O(nlognlogn)你看800+sub原创 2017-02-16 20:40:51 · 711 阅读 · 0 评论 -
Hackerrank Fibonacci Numbers Tree
题目地址 https://www.hackerrank.com/challenges/fibonacci-numbers-tree 大意: 子树按深度加一段连续的Fib数列 询问两点之间的权值和注意到对于任意数列FF Fi=Fi−1+Fi−2F_{i}=F_{i-1}+F_{i-2} 当a>0,b>0a>0,b>0我们有 Fa+b=Fa−1∗Fibb+Fa∗Fibb+1原创 2016-11-16 09:49:54 · 451 阅读 · 0 评论 -
51NOD1525 重组公司
这SB题我居然会WA?#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cstdlib> #include<cstdio> using namespace std; int n,q; char c; inline void read(int&a) {a=0;do c=getchar()原创 2016-10-29 12:19:57 · 506 阅读 · 0 评论 -
HDU 5910Advanced Traffic System
由于边数太多且大多相同我们考虑用点去扩展 类似想法就是把原来的边看做点 原来的点看做一群边 把原来这个点附近的边代表的点相连 把加边操作挂上线段树上 然后类似Dij做一遍 并查集处理做过的点#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<queue原创 2016-10-27 13:43:55 · 445 阅读 · 0 评论 -
BZOJ4399: 魔法少女LJJ
这TM欢乐 我打了两次。。。 最后卡空间。。。 日嘛 最后还被liuchenrui大爷嘲讽了一发可合并的线段树常数大的吓人别问我数组为什么开那么小 不卡小点就挂了(面向数据编程大法好#include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include<cstdlib> #include<map> #in原创 2016-03-14 19:09:51 · 1424 阅读 · 0 评论 -
BZOJ3514: Codechef MARCH14 GERALD07加强版
主席树+LCT 每次加边的时候判断一下是否成环 如果没有就加进去否则弹出环内比序号最小边 然后统计答案#include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<cmath> using namespace std;char c; inline void read(int &a) {原创 2016-02-28 11:36:20 · 580 阅读 · 0 评论 -
BZOJ1095: [ZJOI2007]Hide 捉迷藏
Evan课件上讲了括号序列。。。 发现很厉害的样子 想了一个晚上才搞出来线段树维护就好了 岛娘: http://www.shuizilong.com/house/archives/bzoj-1095-zjoi2007hide-%E6%8D%89%E8%BF%B7%E8%97%8F/#include<cstdio> #include<iostream> #include<cstring> #i原创 2016-02-28 09:10:06 · 590 阅读 · 0 评论 -
BeestCoder #76
鏼爷的题还真的是hentai我真的不是很想打那个数位DP讲道理啊 题目用的东西的确不难 但是难想啊QAQ1001 没打1002 貌似用一点不等式的东西就好了? 感谢×××友情提供的代码1003 G[i]表示子树需要附加贡献 F[i]表示子树贡献#include<cstdio> #include<iostream> #include<cstring> using namespace原创 2016-03-31 19:02:59 · 503 阅读 · 0 评论 -
BZOJ4695: 最假女选手
我好像被卡空间了啊? 惨啊.. 代码好丑啊QAQ 考虑更新 类似VEB Tree的记录当前最大值 不过这样子还是不容易更新最小值的 于是记录一个次大值 和最大值个数便于更新 对于最大值用类似方法维护#include<cstdio> #include<iostream> #include<cstring> #include<cmath> using namespace std; char原创 2017-02-17 11:35:51 · 930 阅读 · 0 评论