- 博客(24)
- 资源 (1)
- 收藏
- 关注
转载 poj2449
k短路a*,其实我一直不认为这个叫a*,,,这种明确的东西也算估价函数?#include #include #include #include #include #define MAXN 1005#define MAXM 500005#define INF 1000000000using namespace std;struct node{ int v,
2016-06-30 19:49:55 193
原创 线段树插队。。题目有点忘了、、
#include#includeusing namespace std;int a[200005];int pos[200005];int tree[600005];int n,L,R;void build(int node,int tl,int tr){ tree[node]=tr-tl+1; if(tl==tr) return ; int mid=(t
2016-06-29 22:40:45 250
原创 线段树插队。。题目有点忘了、、
#include#includeusing namespace std;int a[200005];int pos[200005];int tree[600005];int n,L,R;void build(int node,int tl,int tr){ tree[node]=tr-tl+1; if(tl==tr) return ; int mid=(t
2016-06-29 22:40:22 228
原创 约瑟夫问题线段树
虽然很弱智,毕竟也是做的第一个疑似权值线段树的东西#include #include #include using namespace std;const int maxn=100010;int sum[maxn<<2];void pushup(int idx){ sum[idx]=sum[idx<<1]+sum[idx<<1|1];}void build(int
2016-06-29 22:39:29 443 1
原创 矩形覆盖
相信这个世上没有比我写的还要乱七八糟的线段树了。。。#include#include#includeusing namespace std;int n;int L,R;const int Ni = 210; struct node { int l,r,h; int s; bool operator < (const node & a) const
2016-06-29 22:37:09 206
转载 bzoj3289 树状数组加莫队注意这题每天的交换该是不影响的。。。还有一次交换等价于去掉一个逆序
#include#include#include#include#include#include#include#include#include#include#define inf 1000000000#define ll long long#define eps 1e-5using namespace std;int read(){ int x=0,f=1;ch
2016-06-29 21:24:33 285
转载 bzoj3781
从模版开始。。。#include#include#include#include#include#include#include#include#include#define inf 1000000000#define ll long longusing namespace std;int read(){ int x=0,f=1;char ch=getchar
2016-06-29 21:09:05 296
转载 bzoj1071
[Problem Description]NBA每年都有球员选秀环节。通常用速度和身高两项数据来衡量一个篮球运动员的基本素质。假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有队员都应该满足: A * ( height – minH ) + B * ( speed – minV ) [Algorithm]堆[Analysis
2016-06-29 21:00:18 328
转载 bzoj1455
只能说随机是个好东西比左偏树好写一点#include #include #include #include #define MAX 1000010using namespace std;struct Heap{ Heap *son[2]; int val; Heap(int _):val(_) { son[0] = son[1] = NU
2016-06-29 20:29:51 237
原创 并不能ac jsoi2009
看到这种题目,,下意识先来了个莫队。。。然后。。。想想加个set。不就好了。。看看复杂度n^1.5*logn可能会卡过去吧。。。然后就写了一下。。然后就tle了。。。 #include#include#include#include#include#include#define N 100005#define ll int using namespace std;int
2016-06-27 22:30:43 183
转载 bzoj2724
不得不说分块的思想真的很神奇。。。在线区间众数的分块做法比较多,这里提供一个思路:首先离散化一下比较方便。最初可能会有一个想法,是不是众数只可能是完整的块的众数,或者不完整的块出现的数呢?显然很容易得出反例。应该是完整的所有块的众数,和不完整块中出现的数。所以我们可以预处理f(i,j)表示第 i 块到第 j 块的众数(枚举 i 开个桶扫一遍)。那
2016-06-27 19:38:07 358
转载 bzoj3343
感觉除了打个标记和暴力重构。基本跟上一篇一样#include#include#include#includeusing namespace std;int n,q,m,block;int a[1000001],b[1000001],pos[1000001],add[1000001];void reset(int x){ int l=(x-1)*block+1,r
2016-06-26 19:45:49 257
转载 bzoj2120
分块是一种便捷打法,然而我的常数实在是有点 差。。。#include#include#include#include#include#define N 10001#define M 1000001#define forup(i,a,b) for(int i=a;i<=b;i++)#define fordown(i,a,b) for(int i=a;i>=b;i--)using
2016-06-26 19:26:29 296
转载 弹飞绵羊
因为极度讨厌splay。。平衡树又只会treap...所以非常不想看lct...然后就只好看看分块。。。对于分块边界的加加减减一直没有统一。觉得hzwer写的这种还比较好。那就借鉴一下好了。。。#include#include#include#include#include#include#define inf 0x7fffffff#define ll long longusing
2016-06-25 22:45:54 478
原创 一个精度题。。。
首先肯定想到二分。。。然而j精度问题。。。那就看你自己的造化了。二分得出一个每个人的(步长)然后再来一次二分就可以了(其实直接枚举就好了)#include #include #include #include #include #include #include #include #include #include #include #include #include
2016-06-24 20:00:04 331
转载 跪舔
题意:将一个正整数i的约数个数记为g(i),如g(1)=1,g(2)=2,g(6)=4。如果对于一个正整数k,对于任意正整数ig(i),则k被称为反质数。比如说1,2,4,6,12就是前5个反质数。现在给定一个N,求N以内最大的反质数(N一个数的质因数分解形式为: n=p_1^a_1*p^2^a_2*p_3^a_3*...*p_k^a_k则
2016-06-23 21:21:33 539
转载 bzoj3223区间翻转
本着碰到平衡树都用可持久化treap的原则,找到了一个写的比较短的而且不用深坑的指针的写法,感觉写得还不错。#include#include#include#define N 200005#define mp make_pair#define pa pairusing namespace std;struct treap{int val,ls,rs,sz,key,flip;}t[
2016-06-23 20:24:40 249
转载 可持久化treap 模版
#include#include#include#include#include using namespace std;#define rep(i,x,y) for(int i=x;i<=y;++i)#define dep(i,x,y) for(int i=x;i>=y;--i) struct Treap{Treap *l,*r;int fix,key,size; Tr
2016-06-21 22:41:39 282
转载 带有延迟的斜率优化pku3709
#include #include #include using namespace std; const int N = 500010;typedef long long llg; int n, k, queue[N];llg sum[N], f[N], a[N]; llg dy(int j1, int j2){ return (f[j1]-sum[j1]+a[
2016-06-21 19:30:08 274
转载 斜率优化反向dp
时间: 1000ms / 空间: 131072KiB / Java类名: Main描述共有N(1 输入格式输入第一行包含一个整数N(1 输出格式输出仅一行,包含一个整数,表示最小总费用。备注输入样例511 33 24 32 31 4 输出样例153一开
2016-06-20 20:12:44 285
原创 玄学啊
时间: 1000ms / 空间: 131072KiB / Java类名: Main描述我们定义一个矩阵的权值为这个矩阵四个角上的数值的最小值。现在小M有一个矩阵,他想在这个矩阵中寻找到一个权值最大的子矩阵,请你告诉他这个最大权值。输入格式第一行两个数n m接下来一个n*m的矩阵输出格式一个数表示最大权值
2016-06-20 19:34:58 604
原创 单调队列优化dp
来看个小例子: 对于一个长度为n的整数序列(a1,a2,......,an),从中找出一段连续的长度不超过m的子序列,使得这个序列的和最大。首先前缀和sum[i]=a[1]+a[2]....+a[i]; 容易想到 f[i]=max{sum[i]-sum[k]} (i-m 时间复杂度为O(m*n)优化 :先分离f[i]-sum[i]=max(-su
2016-06-19 21:19:13 266
转载 斜率优化
bzoj1911 && APIO2010 特别行动队题目描述你有一支由n名预备役士兵组成的部队,士兵从1到n编号,要将他们拆分成若干特别行动队调入战场。出于默契的考虑,同一支特别行动队中队员的编号应该连续,即为形如(i, i + 1, …, i + k)的序列。编号为i的士兵的初始战斗力为xi ,一支特别行动队的初始战斗力x为队内士兵初始战斗
2016-06-19 21:03:01 417
转载 dp斜率优—2
hdu4258题目大意:将n个升序数字序列,分成几组连续的序列 ,每一组的所得值,等于最右边的num2减去最左边 的num1,的平方+c即(numi-numj)^2+c解题报告 人:GHQ(SpringWater)分析可得:(dp[j2]-dp[j1]+num[j2+1]*num[j2+1]-num[j1+1]*num[j1+1])/(2(num[j2+1]-n
2016-06-19 20:56:37 197
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人