数据结构
swrd
这个作者很懒,什么都没留下…
展开
-
静态二叉排序树
模板:// sorted val// p=0, build(0);void build(int r){ if((r<<1)<=n) build(r<<1); tree[r]=val[p++]; if(((r<<1)+1)<=n) build((r<<1)+1);}原创 2011-11-24 21:55:30 · 467 阅读 · 0 评论 -
hdu3308
给定10^5个数,区间查询严格上升的最长连续序列长度,点更新某个数.每个区间记录包括左边最长,右边最长,全局最长即可...code:#include #include #include #include #include #include using namespace std;#define N 100050#define LL L,原创 2011-12-06 10:52:54 · 1139 阅读 · 0 评论 -
zju 3633...
将与每个点相同值的前面一个位置记录下来,然后线段树维护即可...果然,我很弱,一直没想到怎么维护...还看错题,以为找重复里面值最大的...其实就是维护这些位置就好...#include "cstdio"#include "cstring"#include "iostream"#include "algorithm"using namespace std;typed原创 2012-08-29 10:03:50 · 366 阅读 · 0 评论 -
zju 3635....
简单线段树,tle到不行...还没查出来....貌似二分没问题....求救....#include "cstdio"#include "cassert"#include "cstring"const int N = 50005;int seg[N<<2], val[N], n, x;int ques(int l, int r, int L, int R, int rt)原创 2012-08-29 11:35:10 · 614 阅读 · 0 评论 -
dp+segtree _ fz2010_Let the light guide us
题意:给一个值矩阵,给一个距离矩阵。(100*5000)在值矩阵每行选一个格,要求相邻两行所选格的列距离小于等于距离矩阵和。求所有选定格的最小值。dp方程:dp[i][j] = min{dp[i-1][k]+val[i][j]} dis[i-1][k]+dis[i][j] >= |k-j|;显然状态是N*M,转移是 M,复杂度N*M*M,直接搞超时。优化d原创 2012-09-19 20:55:41 · 1088 阅读 · 0 评论