题目大意:给定一些形如ax+b>c的不等式,支持插入和修改,以及询问当x=k时有多少不等式成立
将不等式变形 可以得到每个不等式成立时x的取值范围 在树状数组上统计即可
注意事项:
1.a可以等于0 此时若b>c x∈R 若b
2.x的取值范围可能超过[-1000000,1000000]
3.由于有负数 所以区间修改时左右端点都要加上1000001 若加上1000000则死循环
4.小...
分类:
编程语言 时间:
2014-11-21 16:24:46
阅读次数:
353
题目大意:给定一个无向图,多次删除某条边,多次查询两点之间路径上边权最大值的最小值
Link-Cut-Tree维护动态最小生成树
首先倒着做 将所有被删除的边标记(找边我用的排序+二分) 将没标记的边跑一遍Kruskal 求出最小生成树 然后每次加边和查询正常维护即可
LInk-Cut-Tree一气呵成写完,Kruskal尼玛写挂了…… 居然忘记把并查集连边 这我也是醉了
顺便吐槽一下题干...
分类:
其他好文 时间:
2014-11-21 16:24:32
阅读次数:
167
题目大意:同3545 强制在线
3545题解传送门:http://blog.csdn.net/popoqqq/article/details/40660953
强制在线没法排序 启发式合并也就用不了了
Kruskal重构树是个挺好玩的东西 可以拿来处理一些最小生成树的边权最值问题
这里我们Kruskal连边时并不直接连边 而是新建一个节点ext 将两个点所在子树都连到ext的儿子上
比如...
分类:
其他好文 时间:
2014-11-21 16:21:43
阅读次数:
252
题目大意:求1~n的排列能组成多少种小根堆
考虑一个1~i的排列所构成的堆,l为左儿子大小,r为右儿子的大小
那么1一定是堆顶 左儿子和右儿子分别是一个堆 显然如果选出l个数给左儿子 那么左儿子的方案数显然是f[l],右儿子的方案数为f[r]
于是有f[i]=C(i-1,l)*f[l]*f[r]
于是我们线性筛处理出阶乘和阶乘的逆元 代入即可得到WA
原因是这题n可以大于p 此时要用到L...
分类:
其他好文 时间:
2014-11-21 16:21:39
阅读次数:
156
题目大意:给出一个序列,问一段序列中,出现两次以上的颜色有多少种。
思路:和HH的项链很像。
CODE:
#include
#include
#include
#include
#define MAX 1000010
using namespace std;
struct Ask{
int x,y,_id;
bool operator <(con...
分类:
编程语言 时间:
2014-11-21 16:18:17
阅读次数:
279
题目大意:在1~m中选n个不同的数 要求和为X/Y 求方案数
爆搜的话应该是100E左右 所以考虑加剪枝
上下界剪枝 如果当前的情况下剩余的数最大都无法到达目标或最小都无法小于目标 则剪枝
#include
#include
#include
#include
#define M 200200
using namespace std;
struct Segtree{
Segt...
分类:
其他好文 时间:
2014-11-21 16:17:02
阅读次数:
285
题目大意:给定圆弧上的一些点,求有多少个矩形
矩形的对角线一定是直径 所以问题转化为求直径 若直径数量为x 则答案为C(x,2)
这东西用不用啥数据结构维护一下……手贱去看了下数据范围……
其实线性做法巨好写 为何看到那么多版本都是O(n^2)的
#include
#include
#include
#include
#define M 30
using namespace std...
分类:
其他好文 时间:
2014-11-21 16:15:37
阅读次数:
139
题目大意:基本是一颗平衡树的基本操作。
思路:本来是Treap的题,但是为了体现出vEB树的独特用处,所以就比较卡时间。权值线段树的常数会小一点,但是还是会T,所以就只能用zkw来水过了。
只需要在求最大值最小值里面好好考虑一下,剩下就没什么好说的了。
CODE:
#include
#include
#include
#include
#define MAX 1...
分类:
其他好文 时间:
2014-11-21 14:29:37
阅读次数:
256
题目大意:给定一个序列,多次询问区间内出现两次以上的数的数量
n
考虑对于每个区间的左端点 对这个区间有贡献的数是从这个端点开始所有第二次出现的数
于是我们将区间按照左端点排序 然后从左向右扫
令next[i]为i位置上的数下一次出现的位置
初始将所有第二次出现的数加入树状数组
然后每删除一个点i 将next[i]从树状数组中删除 然后将next[next[i]]加入树状数组
然后...
分类:
编程语言 时间:
2014-11-21 14:29:13
阅读次数:
250
题目大意:给定一个图,图的中心是一个n个点的多边形,每条边都外接一个五边形,求生成树个数
Matrix Tree定理?不会!
观察这个图
5n条边 4n个点
每个五边形都是一个环 必须拆掉一条边
拆掉之后发现4n个点 4n条边 是一个基环树
基环树的环上的边由中心多边形被拆掉的边所在的五边形的剩余边与中心多边形未被拆掉的边构成
容易发现这个环上任意拆掉一条边都会导致某个五边形被拆...
分类:
其他好文 时间:
2014-11-21 14:23:08
阅读次数:
229