Buffalo Barricades 题解

news/2025/1/3 3:41:51/

Buffalo Barricades 题解

这题的难点在于某一头牛可能被多个农名占有。怎么处理呢?

我们仔细分析一下就会发现,每一个农名的篱笆最多被一个篱笆直接包含,所以我们把这些之间包含的农名之间连上边,最终形成的是一个森林。

但是我们一开始卡在了:一个农名包含某一个农名的篱笆,只有这个农名来的更早,才能得到包含的这个农名的牛,这其实就变成了一个三维偏序问题,不太容易解。

但其实我们可以从后往前将这些边加回来就可以了。

用dsu维护。

/*
{
######################
#       Author       #
#        Gary        #
#        2020        #
######################
*/
//#pragma GCC target ("avx2")
//#pragma GCC optimization ("O3")
//#pragma GCC optimization ("unroll-loops")
#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define rb(a,b,c) for(int a=b;a<=c;++a)
#define rl(a,b,c) for(int a=b;a>=c;--a)
#define LL long long
#define IT iterator
#define PB push_back
#define II(a,b) make_pair(a,b)
#define FIR first
#define SEC second
#define FREO freopen("check.out","w",stdout)
#define rep(a,b) for(int a=0;a<b;++a)
#define SRAND mt19937 rng(chrono::steady_clock::now().time_since_epoch().count())
#define random(a) rng()%a
#define ALL(a) a.begin(),a.end()
#define POB pop_back
#define ff fflush(stdout)
#define fastio ios::sync_with_stdio(false)
#define check_min(a,b) a=min(a,b)
#define check_max(a,b) a=max(a,b)
using namespace std;
const int INF=0x3f3f3f3f;
typedef pair<int,int> mp;
/*}
*/
int n;
vector<pair<mp,int> > event;
bool cmp(pair<mp,int>  A,pair<mp,int> B){if(A.FIR.SEC!=B.FIR.SEC){return A.FIR.SEC>B.FIR.SEC;}return A.SEC>B.SEC;
}
int ans[300000+20];
set<mp> barrier;
int fa[300000+20],con[300000+20];
int root(int x){return fa[x]=(fa[x]==x? x:root(fa[x]));
}
int main(){scanf("%d",&n);rb(i,1,n){int x,y;scanf("%d%d",&x,&y);event.PB(II(II(x,y),0));}	int m;scanf("%d",&m);rb(i,1,m){int x,y;scanf("%d%d",&x,&y);event.PB(II(II(x,y),i));}sort(ALL(event),cmp);for(auto eve:event){if(eve.SEC==0){auto ite=barrier.lower_bound(II(eve.FIR.FIR,-INF));if(ite==barrier.end()) continue;ans[ite->SEC]++;}else{int x,t;x=eve.FIR.FIR;t=eve.SEC;auto ite=barrier.upper_bound(II(x,t));if(ite!=barrier.end())con[eve.SEC]=ite->SEC;if(ite!=barrier.begin()){ite--;while(ite->SEC>t){bool break_=(ite==barrier.begin());set<mp> :: IT nex;if(!break_){nex=--ite;ite++;}barrier.erase(ite);if(break_) break;ite=nex;}	}barrier.insert(II(x,t));}}rb(i,1,m)fa[i]=i;vector<int> ans_;rl(i,m,1){ans_.PB(ans[i]);if(con[i]){fa[i]=root(con[i]);
//			cout<<i<<'-'<<root(i)<<' '<<con[i]<<endl;ans[root(i)]+=ans[i];}}reverse(ALL(ans_));for(auto it:ans_) printf("%d\n",it);return 0;
}

http://www.ppmy.cn/news/724401.html

相关文章

golang-buffalo框架

关于c.value("tx").(*pop.connection) var s x.(T) //语法为golang的类型断言, 如果x不为nil,且可以转换为T类型,则断言成功,返回一个T类型的变量 s, 如果T为接口,则要求x实现T,如果断言失败 panic c.valule() //获取context中的值,关于tx在下面 buffalo.context返回…

BUFFALO路由器,远程,端口映射

如上图所示&#xff0c;设置后&#xff0c;远程172.18.60.115即可远程到路由器配置IP为192.168.1.59那台PC 以上详细 右上角172.18.60.115为路由器IP 设置DMZ的IP192.168.1.59为想要访问的PC的IP 设置路由器网段192.168.1.1 路由器中DMZ主机是指什么&#xff0c;具体有什么…

7620a路由mysql_MT7620A路由刷DDWRT 及2.4G无线设置经验

本帖最后由 overthink 于 2015-6-15 15:10 编辑 MT7620A路由刷DDWRT 及2.4G无线设置经验 用了N久的buffalo WHR-HP-G54,刷了DDWRT,以前做主路由,后来我用ROS做主路由后WHR-HP-G54就用做AP接入了,一直很稳定,信号也不错,就是速度才54Mbps有点慢,顺手换了吧,入了一个MT76…

java buffalo_随你怎么玩!Buffalo 网络硬盘新潮流

现代时尚的办公环境是怎样的&#xff1f;ADSL、无线网络、笔记本、还有咖啡&#xff0c;惬意地被沙发包裹起来&#xff0c;自由自在地网上冲浪……&#xff1b;当然仅仅有这些还是不够&#xff0c;我们需要视频会议、需要网络下载、甚至打印、扫描&#xff0c;还有需要随时随地…

java buffalo_buffalo文档之buffalo-demo(1)--除法运算器

buffalo文档之buffalo-demo(1)&#xff0d;&#xff0d;除法运算器 buffalo官方站&#xff1a;国内的ajax,amowa开源项目 doc.simle.jsp /p> "http://www.w3.org/TR/html4/loose.dtd">除法运算器 var endPoint"/BUFFALO"; var buffalo new Buffalo(…

java buffalo_初玩Buffalo

页面调用服务器的一个类里面的方法&#xff0c;做下面的步骤就可以了&#xff0c;前提是你配置好了buffalo那个demo。 只需执行下面三个步骤&#xff0c;就可以完成一个简单的乘法调用。 Spring例子(使用于1.2以前的版本) 1) HTML页面上 /buffalo/WebContent/pages/simple.h…

基于线性准则的考虑风力发电不确定性的分布鲁棒优化机组组合(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Android聚合SDK母包反编译出包教程

文章目录 【前言】一、SDK预处理1、SDK资源合并1.1、合并res目录下的资源1.2、合并libs目录1.3、合并assets目录1.4、合并AndroidManifest.xml1.5、合并jar 2、jar转smali2.1、jar 混淆合并2.2、jar转dex2.3、dex转smali 二、母包apk反编译1、删除母包模板代码1.1、删掉母包SDK…