大名鼎鼎的A+B Problem, 主席树优化最小割-- 调题死活调不对,一怒之下改了一种写法交上去A了,但是改写法之后第4,5个点常数变大很多,于是喜提UOJ全站倒数第三 目前还不知道原来的写法为什么是错的,暂时先写一下A掉的那种写法的题解. 题目链接: (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=3218 (UOJ) http://uoj.ac/problem/77 题解: 首先不难想到这样的最小割建图: (醒醒吧这种题就别…
直接建图比较显然,是(s,i,w),(i,t,b),(i,i',p),(i,j,inf),然而建出来之后发现边数是n方级别的,显然跑不过去,然后就有一种比较神的思路:把a离散了建一棵权值线段树,然后要连的j直接放到一个区间内.然而题目又要求j<i,所以需要可持久化 #include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<algorithm>…
UOJ#77. A+B Problem 题意:自己看 接触过线段树优化建图后思路不难想,细节要处理好 乱建图无果后想到最小割 白色和黑色只能选一个,割掉一个就行了 之前选白色必须额外割掉一个p[i],i向i+n连p[i],然后i+n向之前点连INF就行了 向一段区间连边?果断线段树优化 等等,还要满足\(l_i\le a_j \le r_i\),权值建线段树,然后可持久化! 有一点细节没考虑好,就是之前的可能有x了这次a[i]=x,不需要重复把之前再连一遍,只要新叶子到之前的叶子连INF就行了…
竟然在BZOJ上拿了Rank1太给力啦. p.s.:汗,一发这个就被一堆人在2月27号强势打脸-- 传送门(BZOJ) 传送门(UOJ) 说说这道题目吧: 首先是说说这个构图吧.因为有选择关系,我们很容易想到最小割. Ans = sigma(i为白色){w[i]} + sigma(i为黑色){b[i]} - sigma(奇怪的i){p[i]} 转化一下就变成了sigma(所有的i){w[i]+b[i]} - sigma(i为白色){b[i]} -sigma(i为黑色){w[i]} - sigma…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3489 题解:http://www.itdaan.com/blog/2017/11/24/9bc46b690756fe252e17fc3ca90aa01.html 所以就没写KD-tree.树套堆.分块,而是写了树套树. 限制条件是:pr<L:nt>R:L<= i <=R. 对pr排序后建主席树,调用1~L-1的主席树就能限制好第一个条件:主席树里维护 nt 的值域,调用R+1…
题目链接 当时没用markdown写,可能看起来比较难受...可以复制到别的地方看比如DevC++. \(Description\) 给定一个长为n的序列,多次询问[l,r]中最大的只出现一次的数.强制在线. \(Solution\) 我也不知道该怎么说,反正就是预处理 建主席树,套堆/set,树i存l为i,r为[i,n]的答案(这样就是在某棵树上单点查maxv了). 处理好最初的树,就可以利用主席树根据前缀建树的性质,每个点i的建树只需要处理i位置. 那么最初的树就是将所有的数在区间[第一次出…
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…
链接: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…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4556 本来只要查 ht[ ] 数组上的前驱和后继就行,但有长度的限制.可以二分答案解决!然后用主席树查区间内的 ht[ ] 的前驱和后继即可.(主席树弄对 rk 的权值线段树) 在主席树上走的复杂度应该不会比二分然后查看主席树的 log2 更差吧. #include<cstdio> #include<cstring> #include<algorithm> usi…
[题解]A simple RMQ problem 占坑,免得咕咕咕了,争取在2h内写出代码 upd:由于博主太菜而且硬是要用指针写两个主席树,所以延后2hQAQ upd:由于博主太菜而且太懒所以他决定写kd tree了 upd:由于博主太菜而且太懒所以他不写代码了(实际上是写了6k之后崩溃了) 所以直接口胡题解 题目大意: 因为是OJ上的题,就简单点好了.给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这个区间里只出现过一次的数,并且要求找的这个数尽可能大.如果找不到这样的数,则…