摘要: 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=3e6+10; 4 int n,a[N],s[N],ans[N],top; 5 6 int main(){ 7 scanf("%d",&n); 8 for(int i=1;i 阅读全文
posted @ 2022-04-05 15:33 YHXo 阅读(59) 评论(0) 推荐(0)
摘要: 一道单调栈的好题啊。。。。。。 思路是很奇妙的,对于每个点(i,j),我们可以算它对答案的贡献(即包含它的矩形数量),包含该点的矩形,点的高度为h[j],点右边的高度一定大于等于h[j],左边的高度一定大于h[j]。 高有h[j]种方案,底边有(j - lj) * (rj - j)种方案,相乘就是该 阅读全文
posted @ 2022-04-05 15:17 YHXo 阅读(160) 评论(0) 推荐(0)
摘要: 一道妙题啊......(不知道为什么这道题的标签是网络流,不需要用网络流啊) 如果没有门和钥匙,连边(边权为1)求最短路就行了。 但是有这两个因素的限制,我们采用分层建图的思想,一共2p层,每层对应持有钥匙的2p种状态(就是状态压缩),在分层图上连边,当前层没有的钥匙,就向有该类钥匙的层连边(注意此 阅读全文
posted @ 2022-04-05 11:03 YHXo 阅读(54) 评论(0) 推荐(0)
摘要: 题目描述 给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有need条白色边的生成树。 题目保证有解。 一个最小生成树问题,但是我们要选need条白边,我们用g(i)表示选取i条白边的最优方案(生成树的权值最小),那么可以大致猜出g(i)是关于i的一个下凸函数,可以发现斜率k是有单 阅读全文
posted @ 2022-04-05 09:43 YHXo 阅读(36) 评论(0) 推荐(0)