- 博客(13)
- 收藏
- 关注
原创 如何对double型变量进行memset获得极大值或极小值
我们都知道,如果想对int型变量清极大值或极小值,我们一般选择memset(a,0x3f,sizeof a);或者memset(a,0xef,sizeof a);。然而,如果对double型清0x3f,我们经常会得到一个连1都不到的小数。那么对double清极值是否智能手动或者fill(a+1,a+n,0x7fffffff);呢?首先我们运行以下程序#include#incl
2014-08-29 16:06:39 8216
原创 POJ 3481 Double Queue 堆修改标记
Enemy Double Queue!题目大意:维护一种数据结构,支持以下操作:1.插入一个值2.查询最大值并删除3.查询最小值并删除元素的值这数据结构一看就是堆。。。不过堆结构不能同时维护最大值和最小值,于是我们开两个堆,一个大根堆,一个小根堆其中一堆删除时,另一堆也要删除相应元素于是删除的话有两种方法1.映射 1000W开数组映射妥妥MLE 于是我们在两个堆
2014-08-29 15:46:03 1677
原创 BZOJ 1492 货币兑换 Cash 平衡树维护凸包 CDQ分治
题目大意:这题真是为难了我1B。。。做了三天,两种方法都试过了一遍,真是膜拜NOI的神犇们能在一个多小时内干掉这道题首先这题一看就是斜率优化 连递推式都是P=A[i]*X[i]+B[i]*Y[i] 万事俱备 就是AB不单调!斜率不单调其实也好办 反正是凸包 平衡树维护不就简单了简单个熊啊!!!第一天下午开始写,第二天早上还在调,下午才AC,写了足足5
2014-08-27 18:46:08 4129 3
原创 BZOJ 2002 弹飞绵羊 Link-Cut-Tree(LCT)
题目大意:某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞。为了使得游戏更有趣,Lostm
2014-08-26 16:20:49 2711 1
原创 BZOJ 3626 LCA 树链剖分
题目大意:给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。有q次询问,每次询问给出l r z,求sigma_{l(即,求在[l,r]区间内的每个节点i与z的最近公共祖先的深度之和)这题看见了直接卡壳。。。然后看了题解才搞懂要怎么写
2014-08-25 17:19:59 3538 1
原创 BZOJ 1036 树的统计 Count 树链剖分
题目大意:一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身n
2014-08-25 12:53:55 1240
原创 堆模板
void swap(int &x,int &y){int z=x;x=y;y=z;}struct small_root_heap{ int heap[M],top; void insert(int x){heap[++top]=x;int t=top;while(t>1&&heap[t]>1])swap(heap[t],heap[t>>1]),t>>=1;} void p
2014-08-22 18:55:20 1370
原创 POJ 3784 Running Median 对顶堆算法
题意:一组数按顺序加入数组,每奇数次加入的时候就输出中位数(看成中出し的果断自粽)哼哼,如果是求最大最小值,那么我们很容易就会想到利用堆那么这道题很明显也可以用堆的办法解决——锵锵锵锵!
2014-08-22 18:50:06 3071
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人