参考:https://blog.csdn.net/herobrine_tkj/article/details/78404426?locationNum=8&fps=1 为什么从1开始存就挂了,这是个未解之谜... 把两个人条件转换为二维平面内的点,零件生产公司是左下角,零件消费公司是右上角,求最大矩形 然后画图可知这个是单调的,所以把零件生产公司和零件消费公司一起分治即可 注意一开始要x-y排序之后去重,保持x和y的单调 #include<iostream> #include<c…
题目大意:略 题目传送门 不愧是$World final$的神题,代码短,思维强度大,细节多到吐..调了足足2h 贪心 我们利用贪心的思想,发现有一些工厂/公司是非常黑心的 以工厂为例,对于一个工厂$i$,如果存在一个工厂$j$,$d_{j}<d_{i},p_{j}<p_{i}$,即出货比i早,而且比i便宜 那么不论我们选择任何消费公司,都一定会选$j$而不是选$i$ 消费公司也用类似的贪心方法,消去那些黑心公司 以$d$为$x$轴,$p$为$y$轴,我们得到了许多在二维平面上的点,保证$d_…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 在这道题种你需要解决一个全世界人类从存在起就在面临的最深刻的问题--如何发大财. 你是一名零件交易市场的中介.你的工作是从零件生产公司那里买到零件,然后把它们卖给零件消费公司. 每个零件消费公司在截止日期前每天都会对一个零件有一个开放式的需求,以及它愿意买下零件的价格.另一方面,每个零件生产公司在开始日期及以后都可以销售零件,以及它销售零件的价格.基于公平竞争法…
Luogu 3810 & BZOJ 3263 陌上花开/三维偏序 | CDQ分治 题面 \(n\)个元素,每个元素有三个值:\(a_i\), \(b_i\) 和 \(c_i\).定义一个元素的偏序是三个值都小于等于它的值的元素的个数,对于\([0, n)\)的每个值\(i\),求偏序为\(i\)的元素个数. 题解 这道题我使用的是CDQ分治. 这道题有三个维度,每个维度都要对应一个数据结构/算法,来逐个击破. 首先,按照\(a\)从小到大把所有元素排序,保证\(a\)从小到大. 然后,对于第二维…
Bzoj4951:决策单调性 分治 国际惯例题面:一句话题面:供应商出货日期为Ei,售价为Pi:用户收购截止日期为Si,收购价格为Gi.我们要求max((Si-Ej)*(Gi-Pj)).显然如果我们把这两者都按照Ei,Si递增排序,则Pi,Gi都是单调降的.为什么?如果一个供应商生产时间后且价格高,显然你不会选择他:如果一个用户购买时间短且收购价格低,显然你也不会选择他.然后我们会写n^2暴力了.考虑优化. 这种DP要么斜率+数据结构优化,要么就是决策单调性.考虑斜率优化,发现这是一个三维凸包问…
LOJ BZOJ 洛谷 点分治.考虑如何计算过\(rt\)的答案. 记\(pre[i]\)表示(之前的)子树内循环匹配了\(S\)的前缀\(i\)的路径有多少,\(suf[i]\)表示(之前的)子树内循环匹配了\(S\)的后缀\(i\)的路径有多少. 一个点如果能作为前缀\(dep\%m\)出现,然后\(s[rt]=s[dep\%m+1]\),就可以统计\(suf[m-dep\%m-1]\)的贡献. 作为后缀出现同理. 判某个深度\(dep\)是否是循环匹配了\(S\)的前缀\(i\),本来想的…
BZOJ \(Description\) 给定一棵\(n\)个点的带权树,求树上\(\frac{n\times(n-1)}{2}\)条路径中,长度最大的\(m\)条路径的长度. \(n\leq50000,\ m\leq\min(3\times10^5,\frac{n\times(n-1)}{2})\). \(Solution\) 利用 点分治可以处理出树上所有路径 的性质,在每次点分治处理子树时,我们把当前根\(root\)和访问到的点\(x\)依次存到同一个数组里,把存下来的\(dis(x,r…
Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达.游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯.在起初的时候,所有的灯都没有被打开.每一次,孩子们只会躲藏在没有开灯的房间中,但是为了增加刺激性,孩子们会要求打开某个房间的电灯或者关闭某个房间的电灯.…
BZOJ 3295 动态逆序对 这道题和三维偏序很类似.某个元素加入后产生的贡献 = time更小.pos更小.val更大的元素个数 + time更小.pos更大.val更小的元素个数. 分别用类似CDQ分治求三维偏序的方法求即可. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; #define space putch…
2152: 聪聪可可 Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已经玩儿腻了这种低智商的游戏.他们的爸爸快被他们的争吵烦死了,所以他发明了一个新游戏:由爸爸在纸上画n个“点”,并用n-1条“边”把这n个“点”恰好连通(其实这就是一棵树).并且每条“边”上都有一个数.接下来由聪聪和可可分别随即选一个点(当然他们选点时是看不到这棵树…