Keen On Everything But Triangle 感觉最近多校好多主席树的亚子,但是本人菜得很,还没学过主席树,看着队友写题就只能划水,\(WA\)了还不能帮忙\(debug\),所以深思熟虑之后决定学习一下主席树. 题意 问在\([l,r]\)区间内取三个数字构成三角形,问能构成的三角形最大的周长是多少?如果不能构成三角形输出\("-1"\). 思路 三角形构成的条件: 三条边 两边之和大于第三边 然后呢,我们要找最大的周长,那么我们很容易想到取最大的三条边,如果不行就…
题意  给定n个平面上的点,坐标范围为[1, 50000].如果对于任意两个点,都可以通过直走(中途经过其他点)走到. 那么输出YES,否则输出NO. 首先排序,去重. 我们要找的点对是只能斜对角走到的点. 那么找到这个点正左边的离他最近的点和正上方最近的点.查询以这三个点为顶点的矩形的内部有没有其他点. 如果有的话就找到了这样的点对,输出NO. 用主席树实现,时间复杂度$O(nlogn)$. #include <bits/stdc++.h> using namespace std; #def…
题目链接  2016多校1 Problem J 题意  给定两棵相同的树,但是编号方案不同.求第一棵树上的每个点对应的第二棵树上的点.输出一种方案即可. 首先确定树的直径的中点.两棵树相等意味着两棵树的直径相等. 然而直径有很多条,我们任意求出两棵树的各一条直径并不以为着这两条直径是相对应的. 但是直径的中点一定是相对应的. 确定根结点后对整棵树哈希并进行匹配的这个过程是不难的. 当直径长度为偶数时中点有两个,那么最多做$4$次匹配就可以了. 这个哈希函数要好好设计,很容易产生冲突. #incl…
终于是解决了这个题目了 不过不知道下一次碰到主席树到底做不做的出来,这个东西稍微难一点就不一定能做得出 离散化+扫描线式的建树,所以对于某个坐标二分找到对应的那颗主席树,即搜索出结果即可(因为是扫描线式的建树,找到对应的树之后,就知道该点上面的线段有多少条了) 其他就是普通主席树的操作了 主席树里面维护两个东西,一个就是普通的那种在该区间的节点数目,另外就是权值 #include <iostream> #include <cstdio> #include <cstring&g…
Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = 4+1 6 = 4+1+1 7 = 4+1+1+1 8无法表示为集合S的子集的和,故集合S的神秘数为8. 现给定n个正整数a[1]..a[n],m个询问,每次询问给定一个区间l,r,求由a[l],a[l+1],-,a[r]所构成的可重复数字集合的神秘数. Input 第一行一个整数n,表示数字个数.…
题目链接 BZOJ4408 题解 假如我们已经求出一个集合所能凑出连续数的最大区间\([1,max]\),那么此时答案为\(max + 1\) 那么我们此时加入一个数\(x\),假若\(x > max + 1\),显然对答案没有影响 但是假若\(x \le max + 1\),显然最大区间变为\([1,max + x]\),答案变为\(max + x + 1\) 那么我们就能得出这题的解法了 将区间内的数排序,一开始\(ans = 0\),然后逐一将数加入集合之中, 一但出现\(x > max…
题意: 给出一棵树,每条边有一个容量. 有若干次询问:\(S \, T \, K \, A \, B\),求路径\(S \to T\)的最大流量. 有两种方法可以增大流量: 花费\(A\)可以新修一条管道,管道可以连接任意两个点,两个点之间可以有任意条管道连接,新修的管道容量为\(1\) 花费\(B\)可以使某条管道(包括新修的管道)的容量增加\(1\) 求在不超过预算\(K\)的情况下的最大流量. 分析: 注意到流量最大只有\(10^4\),所以我们可以直接在值域上建一棵主席树. 主席树区间维…
传送门 •题意 有 $m$ 次询问,每次询问求 $n$ 个数中, $[L,R]$ 区间距 $p$ 第 $k$ 近的数与 $p$ 差值的绝对值: •题解 二分答案,假设当前二分的答案为 $x$,那么如何判断 $x$ 是否可以呢? 只需判断 $[L,R]$ 区间值在 $[p-x,p+x]$ 的数的个数 $sum$ 是否大于等于 k 即可: 如果 $sum \geq k$,那么,x 大了,需要减小范围,反之,需要增大范围: 如何快速求解 $[L,R]$ 区间值在 $[p-x,p+x]$ 的数的个数呢?…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5820 [题目大意] 在一个大小为50000*50000的矩形中,有n个路灯. 询问是否每一对路灯之间存在一条道路,使得长度为|x1–x2|+|y1–y2|且每个拐弯点都是路灯. [题解] 只要找到不共线的两个点,他们所构成的矩阵剩余的两个点都是不存在的,那么这个图就是违法的.那么如何找呢,我们将所有点按照x为第一关键字,y为第二关键字排序,逐行扫描,对于每个点,扫描与他同行的前后两个点的列坐标形…
题目链接 题意 : 给出 2*N 颗珠子.有 N 颗是阴的.有 N 颗是阳的.现在要把阴阳珠子串成一个环状的项链.而且要求珠子的放置方式必须的阴阳相间的.然后给出你 M 个限制关系.格式为 ( A.B ) 表示如果阳性 A 珠子和阴性 B 珠子相邻的话.那么阳性珠子就会衰弱.问你在最优的情况下.最少有多少颗阳珠子是衰弱的 分析 : 看题目 N 的大小只有 9 不免让人浮想联翩.跃跃欲试枚举暴力 直接暴力还是不行的 首先先枚举阴珠子所在的位置 这个可以用 next_permutation 解决 然…