Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣.已知办公 楼都位于同一条街上.你决定给这些办公楼配对(两个一组).每一对办公楼可以通过在这两个建筑物之间铺设网 络电缆使得它们可以互相备份.然而,网络电缆的费用很高.当地电信公司仅能为你提供 K 条网络电缆,这意味 着你仅能为 K 对办公楼(或总计2K个办公楼)安排备份.任一…
#include<bits/stdc++.h> using namespace std; #define maxn 100005 #define INF 0x3fffffff #define pa pair<int,int> int n,k,pre[maxn],nxt[maxn],len[maxn]; priority_queue<pa,vector<pa>,greater<pa> >q; int main(){ scanf("%d%d…
传送门 貌似是个可并堆的模板题,笔者懒得写左偏堆了,直接随机堆水过.实际上这题就是维护一个可合并的大根堆一直从叶子合并到根,如果堆中所有数的和超过了上限就一直弹直到所有数的和不超过上限为止,最后对于当前的子树,这样剩下的堆中的元素个数一定是最多的,然后直接统计答案就行了. 代码: #include<bits/stdc++.h> #define N 100005 #define ll long long using namespace std; inline ll read(){ ll ans=…