链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1926 题面; 1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 1669  Solved: 618[Submit][Status][Discuss] Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co rmen…
BZOJ 1926: [Sdoi2010]粟粟的书架(主席树,二分答案) 题意 : 给你一个长为\(R\)宽为\(C\)的矩阵,第\(i\)行\(j\)列的数为\(P_{i,j}\). 有\(m\)次询问,每次有5个参数\(x_l,x_r,y_l,y_r,h\). 求以\((x_l,y_l)\)为左上角和\((x_r,y_r)\)为右下角的矩形中,至少要选几个值,使得它们的和\(\geq h\). 数据范围 : 对于\(50 \%\)的数据,满足\(R,C \le 200,M \le 200,0…
题目链接 题意: 在给定矩形区域内找出最少的数,满足和>=k.输出数的个数.两种数据范围. 0~50 注意到(真没注意到...)P[i,j]<=1000,我们可以利用前缀和预处理. num[i][j][v]表示(1,1)~(i,j)中值>=v的个数,val[i][j][v]表示(1,1)~(i,j)值>=v的所有数的和.(不要被什么>=v坑,和二维前缀和一样,只是一个点的初始值为A[i,j]>=k) 依旧二分.(好像可以离线之类的优化空间?不管了) 60~100 在一个…
题目地址:https://www.icpc.camp/contests/6CP5W4knRaIRgU 比赛的时候知道这题是用主席树+二分,可是当时没有学主席树,就连有模板都不敢套,因为代码实在是太长了. 题意:给你一些数字,要求你某些区间中找到一个h-index. 每次查找h-index复杂度不能超过O(n) h-index的定义是:有最少h个数不小于h,找到最大的h. 分析:假如查询的区间长度为n,那么ans一定是1-n.用二分查找找到一个最大的n即可 #include <cstdio> #…
Distance on the tree DSM(Data Structure Master) once learned about tree when he was preparing for NOIP(National Olympiad in Informatics in Provinces) in Senior High School. So when in Data Structure Class in College, he is always absent-minded about…
题意:在x轴\([1,X]\)内的上空分布有n个占据空间\([L_i,R_i]\),高度\(D_i\)的线段,射中线段的得分为其高度,每次询问从x轴的\(x\)往上空射的最近k个线段的总得分,具体得分制看题 按高度对线段进行排序,那么如果我们能\(O(logn)\)内查询到某一时间段的占据\(x\)的线段个数,那么由占据\(x\)的个数的单调性就能在\(O(log^2n)\)内找到符合的最近k个线段 而某一时间段占据某位置的线段个数那就对应于主席树,二分对应于某一历史版本的根 注意由于查询必然经…
K-th Closest Distance Time Limit: 20000/15000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 1697    Accepted Submission(s): 633 Problem Description You have an array: a1, a2, , an and you must answer for some qu…
HDU6621 K-th Closest Distance HDU2019多校训练第四场 1008(主席树+二分) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6621 题意: 给你n个数,有m次询问 每次问你在区间[l,r]内 第k小的|\(a_i-p\)|是多少 题解: 主席树+二分 每次二分答案 如果p+mid到p-mid的值的个数大于k个的话,mid值就是可行了,然后缩小区间往左找即可 因为保证有解,所以二分出来的mid值就是答案了 que…
1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Sec Memory Limit: 552 MB Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co rmen 的文章.粟粟家中有一个 R行C 列的巨型书架,书架的每一个位置都摆有一本书,上数第i 行.左数第j 列 摆放的书有Pi,j页厚.粟粟每天除了读书之外,还有一件必不可少的工作就是摘苹果,她每天必须摘取一个指定的 苹果.粟粟家…
Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Cormen 的文章.粟粟家中有一个 R行C 列的巨型书架,书架的每一个位置都摆有一本书,上数第i 行.左数第j 列摆放的书有Pi,j页厚.粟粟每天除了读书之外,还有一件必不可少的工作就是摘苹果,她每天必须摘取一个指定的苹果.粟粟家果树上的苹果有的高.有的低,但无论如何凭粟粟自己的个头都难以摘到.不过她发现, 如果在脚下放上几本书,就可以够着苹果:她同时注意到…
#include<cstdio> #include<iostream> #define N 201 #define M 500008 using namespace std; *M],rs[*M],root[M],ans,sum[*M],sum1[*M],shu,num[][N][N],num1[][N][N]; void jia(int l,int r,int x,int &y,int v) { y=++cnt; sum[y]=sum[x]+v; sum1[y]=sum1…
[SDOI2010]粟粟的书架 考虑暴力怎么做 显然是提取出来 (x2-x1+1)*(y2-y1+1) 个数字拿出来 然后从大到小排序 然后就可以按次取数了- 然而接下来看数据范围 \(50\%\ r,c\leq 200\) \(50\%\ r=1,c\leq 5*10^5\) 值域 \(\in [1,1000]\) 对于前 50% 可以用个前缀和搞定- 令 \(sum_{i,j,k}\) 为 大于 k 的前缀和 \(num_{i,j,k}\) 为 大于 k 的前缀和数量 然后愉快的二分? 另外…
粟粟的书架 Time Limit: 30 Sec  Memory Limit: 552 MB[Submit][Status][Discuss] Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Cormen 的文章. 粟粟家中有一个 R行C列 的巨型书架,书架的每一个位置都摆有一本书,上数第 i 行.左数第 j 列摆放的书有Pi,j页厚. 粟粟每天除了读书之外,还有一件必不可少的工作就是摘苹果,她每天必须摘取…
题目 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co rmen 的文章.粟粟家中有一个 R行C 列的巨型书架,书架的每一个位置都摆有一本书,上数第i 行.左数第j 列 摆放的书有Pi,j页厚.粟粟每天除了读书之外,还有一件必不可少的工作就是摘苹果,她每天必须摘取一个指定的 苹果.粟粟家果树上的苹果有的高.有的低,但无论如何凭粟粟自己的个头都难以摘到.不过她发现, 如果在脚 下放上几本书,就可以够着苹果:她同时注意到,对于第…
大名鼎鼎的A+B Problem, 主席树优化最小割-- 调题死活调不对,一怒之下改了一种写法交上去A了,但是改写法之后第4,5个点常数变大很多,于是喜提UOJ全站倒数第三 目前还不知道原来的写法为什么是错的,暂时先写一下A掉的那种写法的题解. 题目链接: (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=3218 (UOJ) http://uoj.ac/problem/77 题解: 首先不难想到这样的最小割建图: (醒醒吧这种题就别…
3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 1312  Solved: 501[Submit][Status][Discuss] Description N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. Input 第一行四个整数N.M.K.type,代表点数.边数.询问数以及询问是否加密.接下来M行,代表图中的每条边.接下来K行,每行两个整数L…
题目链接: TP 题解:   可能是我比较纱布,看不懂题解,只好自己想了…… 先附一个离线版本题解[Ivan] 我们考虑对于询问区间是可以差分的,然而这并没有什么卵用,然后考虑怎么统计答案. 首先LCA一定是z的祖先(这里说的祖先包括自己,以下祖先均为此概念)节点,也就是是说我们只要计算出每个祖先节点的贡献就可以了,再考虑每个祖先的贡献如何计算. 我们发现对于深度其实是该点到root的路径点数,所以我们可以这样想,我们询问z的祖先的答案,就是在计算有对于给定区间有多少个点经过了z的祖先. 那么思…
2653: middle Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2522  Solved: 1434[Submit][Status][Discuss] Description 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整.给你一个 长度为n的序列s.回答Q个这样的询问:s的左端点在[a,b]之间,右端点在[c,d]之间的子序列中,最大的中位数. 其中a<b<c<d.位置也…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4556 本来只要查 ht[ ] 数组上的前驱和后继就行,但有长度的限制.可以二分答案解决!然后用主席树查区间内的 ht[ ] 的前驱和后继即可.(主席树弄对 rk 的权值线段树) 在主席树上走的复杂度应该不会比二分然后查看主席树的 log2 更差吧. #include<cstdio> #include<cstring> #include<algorithm> usi…
4504: K个串 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 268  Solved: 110[Submit][Status][Discuss] Description 兔子们在玩k个串的游戏.首先,它们拿出了一个长度为n的数字序列,选出其中的一 个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次). 兔子们想知道,在这个数字序列所有连续的子串中,按照以上方式统计其所有数字之和,第 k大的和是多少. Input 第一…
题目: emmmm是个权限题 题解: 带修改主席树的板子题,核心思想是用树状数组维护动态前缀和的性质来支持修改 修改的时候修改类似树状数组一样进行logn个Insert 查询的时候同理,树状数组的方法取出和这个位置相关的节点,用数组保存然后计算 #include<cstdio> #include<algorithm> #include<cstring> #define N 100005 #define M 6000005 using namespace std; int…
Solution 1: 后缀数组暴力大法好 #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define F(i,j,k) for (int i=j;i<=k;++i)…
题目链接  HH的项链 这道题可以直接上主席树的模板 #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i(a); i <= (b); ++i) #define dec(i, a, b) for (int i(a); i >= (b); --i) typedef long long LL; const int N = 5e4 + 10; const int M = 3e6 + 10…
可并堆就可以,但是想复健一下主席树. 考虑枚举管理者,然后选忍者的时候在子树中贪心的从小到大选.做成dfs序就是选区间内和小于等于k的最多点.可以用主席树,查询的时候在主席树上二分即可 这里注意,为了方便起见,离散化的时候即使值相同也离散成不同值,这样可以保证主席树叶子结点的size最大为1,方便二分 #include<iostream> #include<cstdio> #include<map> #include<algorithm> using nam…
Description M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条高速光缆组成. 每个部门都有一个专属的路由器,部门局域网内的所有机器都联向这个路由器,然后再通过这个通信子网与其他部 门进行通信联络.该网络结构保证网络中的任意两个路由器之间都存在一条直接或间接路径以进行通信. 高速光 缆的数据传输速度非常快,以至于利用光缆传输的延迟时间可以忽略.但是…
题目大意:略 题目传送门 神题,不写长题解简直是浪费了这道题 贪心 考虑从0节点出发的情况,显然一直往前走不回头才是最优策略 如果起点是在中间某个节点$s$,容易想到,如果既要游览$s$左边的某些景点,又要游览$s$右边的某些景点,最优策略一定是先游览完一边,然后再穿过$s$节点去游览另一边 也就是说$s$节点一定只被穿过一次,且先被游览完的一边还要额外消耗$x$点代价,$x$是距离$s$最远的被游览的节点到s的距离 设计DP状态 现在只考虑从S出发往右走的情况 定义状态$dp[i][j]$表示…
传送门 解题思路 首先可以想到一种暴力做法,就是询问时二分,然后大于等于这个值的设为1,否则设为-1,然后就和GSS1那样统计答案.但是发现这样时间空间复杂度都很爆炸,所以考虑预处理,可以用主席树来做了.以\(rt[i]\)为根线段树维护二分的答案为\(i\)的线段树,线段树下标是位置.处理的时候就排一遍序,然后每次\(mid+1\)的时候发现只有\(mid\)这个位置的值要变成\(-1\),所以可以直接处理. 代码 #include<iostream> #include<cstdio&…
BZOJ 洛谷 求中位数除了\(sort\)还有什么方法?二分一个数\(x\),把\(<x\)的数全设成\(-1\),\(\geq x\)的数设成\(1\),判断序列和是否非负. 对于询问\((a,b,c,d)\),同样也可以二分中位数\(x\),然后把原序列对应地改为\(+1\)或\(-1\). 此时区间\([b,c]\)中的数是必选的,求一个和\(sum\).显然对于区间\([a,b-1]\),我们可以求一个和最大的后缀:对于区间\([c+1,d]\),可以求一个和最大的前缀.然后判断总和是…
转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 2224: Boring Counting Time Limit: 3 Sec  Memory Limit: 128 MB Description In this problem you are given a number sequence P consisting of N integer and Pi is the ith element in the sequence.…
题目:https://loj.ac/problem/2551 答案是排序后依次走到 K ~ K+r-l . 想维护一个区间排序后的结果,使得可以在上面二分.求和:二分可以知道贡献是正还是负. 于是想用树套树维护一段区间的元素减去从0开始的等差数列的值.为了二分,维护 fr , sc 表示权值区间里第一个/最后一个权值. 时间空间都是 nlog2n 的,空间连 70 分的范围都开不下.而且对拍1000以内的数据还有错误,交上去 TLE 得只能得 70 分. #include<cstdio> #i…