CF1054F Electric Scheme
#include<bits/stdc++.h>
#define reg register int
#define il inline
#define fi first
#define se second
#define mk(a,b) make_pair(a,b)
#define numb (ch^'0')
#define pb push_back
#define solid const auto &
#define enter cout<<endl
#define pii pair<int,int>
using namespace std;
typedef long long ll;
template<class T>il void rd(T &x){
char ch;x=;bool fl=false;while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
for(x=numb;isdigit(ch=getchar());x=x*+numb);(fl==true)&&(x=-x);}
template<class T>il void output(T x){if(x/)output(x/);putchar(x%+'');}
template<class T>il void ot(T x){if(x<) putchar('-'),x=-x;output(x);putchar(' ');}
template<class T>il void prt(T a[],int st,int nd){for(reg i=st;i<=nd;++i) ot(a[i]);putchar('\n');}
namespace Modulo{
const int mod=;
int ad(int x,int y){return (x+y)>=mod?x+y-mod:x+y;}
void inc(int &x,int y){x=ad(x,y);}
int mul(int x,int y){return (ll)x*y%mod;}
void inc2(int &x,int y){x=mul(x,y);}
int qm(int x,int y=mod-){int ret=;while(y){if(y&) ret=mul(x,ret);x=mul(x,x);y>>=;}return ret;}
}
//using namespace Modulo;
namespace Miracle{
const int N=;
const int inf=0x3f3f3f3f;
int n;
struct node{
int nxt,to;
int w;
}e[*(N*N+N+N)];
int hd[*N],cnt=;
void add(int x,int y,int w){
e[++cnt].nxt=hd[x];
e[cnt].to=y;e[cnt].w=w;
hd[x]=cnt; e[++cnt].nxt=hd[y];
e[cnt].to=x;e[cnt].w=;
hd[y]=cnt;
}
int d[*N];
int s,t;
int dfs(int x,int flow){
if(x==t) return flow;
int res=flow;
for(reg i=hd[x];i&&res;i=e[i].nxt){
int y=e[i].to;
if(d[y]==d[x]+){
int k=dfs(y,min(res,e[i].w));
if(!k) d[y]=;
res-=k;
e[i].w-=k;
e[i^].w+=k;
}
}
return flow-res;
}
int q[*N],l,r;
bool bfs(){
l=,r=;
memset(d,,sizeof d);
q[++r]=t;
d[t]=t+;
while(l<=r){
int x=q[l++];
for(reg i=hd[x];i;i=e[i].nxt){
int y=e[i].to;
if(e[i^].w&&!d[y]){
d[y]=d[x]-;
q[++r]=y;
if(y==s) return true;
}
}
}
return false;
}
struct po{
int x,y;
po(){}
po(int xx,int yy){
x=xx;y=yy;
}
void op(){
ot(x);ot(y);
}
}p[N]; struct line{
int pos,l,r;
}X[N],Y[N];
int cx,cy; int th[N],hc;
int tl[N],lc;
vector<int>hang[N],lie[N];
vector<int>ex[N],ey[N];
bool jiao(line a,line b){
if((b.l<=a.pos&&a.pos<=b.r)&&(a.l<=b.pos&&b.pos<=a.r)) return true;
return false;
} bool vis[*N];
void fin(){
l=,r=;
q[++r]=s;
vis[s]=;
while(l<=r){
int x=q[l++];
// cout<<" fin "<<x<<endl;
for(reg i=hd[x];i;i=e[i].nxt){
int y=e[i].to;
if(!vis[y]&&e[i].w){
vis[y]=;
q[++r]=y;
}
}
}
// cout<<" visiv "<<endl;
// prt(vis,s,t);
} struct sol{
po a,b;
}ax[N],ay[N];
int ansx,ansy;
int main(){
rd(n);
for(reg i=;i<=n;++i){
rd(p[i].x);rd(p[i].y);
tl[++lc]=p[i].x;
th[++hc]=p[i].y;
}
sort(tl+,tl+lc+);
lc=unique(tl+,tl+lc+)-tl-;
sort(th+,th+hc+);
hc=unique(th+,th+hc+)-th-;
for(reg i=;i<=n;++i){
int tx=lower_bound(tl+,tl+lc+,p[i].x)-tl;
int ty=lower_bound(th+,th+hc+,p[i].y)-th;
hang[ty].pb(p[i].x);
lie[tx].pb(p[i].y);
}
for(reg i=;i<=lc;++i) sort(lie[i].begin(),lie[i].end());
for(reg i=;i<=hc;++i) sort(hang[i].begin(),hang[i].end());
for(reg i=;i<=lc;++i){
if(!lie[i].size()) continue;
int las=lie[i][];
for(reg j=;j<lie[i].size();++j){
int now=lie[i][j];
if(now->=las+){
++cx;
X[cx].pos=tl[i];
X[cx].r=now-;
X[cx].l=las+;
ex[i].pb(cx);
}
las=now;
}
}
for(reg i=;i<=hc;++i){
if(!hang[i].size()) continue;
int las=hang[i][];
for(reg j=;j<hang[i].size();++j){
int now=hang[i][j];
if(now->=las+){
++cy;
Y[cy].pos=th[i];
Y[cy].r=now-;
Y[cy].l=las+;
ey[i].pb(cy);
}
las=now;
}
}
s=;t=cx+cy+; for(reg i=;i<=cx;++i){
add(s,i,);
for(reg j=;j<=cy;++j){
if(jiao(X[i],Y[j])){
// cout<<" jiao "<<i<<" j "<<j<<endl;
add(i,j+cx,inf);
}
}
}
for(reg i=;i<=cy;++i){
add(i+cx,t,);
} while(bfs())while(dfs(s,inf)); fin();
// cout<<" cx "<<cx<<" cy "<<cy<<endl; for(reg i=;i<=lc;++i){ if(!lie[i].size()) continue;
int le=lie[i][],ri;
for(solid now:ex[i]){
if(vis[s]!=vis[now]){ ri=X[now].l-;
++ansx;
ax[ansx].a=po(X[now].pos,le);
ax[ansx].b=po(X[now].pos,ri);
le=X[now].r+;
}
}
ri=lie[i][lie[i].size()-];
++ansx;
ax[ansx].a=po(tl[i],le);
ax[ansx].b=po(tl[i],ri);
} for(reg i=;i<=hc;++i){
// cout<<" i "<<i<<" : "<<th[i]<<endl;
if(!hang[i].size()) continue;
int le=hang[i][],ri;
for(solid now:ey[i]){
if(vis[t]!=vis[now+cx]){
ri=Y[now].l-;
++ansy;
// cout<<" new "<<endl;
ay[ansy].a=po(le,Y[now].pos);
ay[ansy].b=po(ri,Y[now].pos);
le=Y[now].r+;
}
}
ri=hang[i][hang[i].size()-];
++ansy;
ay[ansy].a=po(le,th[i]);
ay[ansy].b=po(ri,th[i]);
} printf("%d\n",ansy);
for(reg i=;i<=ansy;++i){
ay[i].a.op();ay[i].b.op();puts("");
}
// puts("");
printf("%d\n",ansx);
for(reg i=;i<=ansx;++i){
ax[i].a.op();ax[i].b.op();puts("");
}
return ;
} }
signed main(){
Miracle::main();
return ;
} /*
Author: *Miracle*
*/
CF1054F Electric Scheme的更多相关文章
- 一句话题解&&总结
CF79D Password: 差分.两点取反,本质是匹配!最短路+状压DP 取反是套路,匹配是发现可以把操作进行目的化和阶段化,从而第二次转化问题. 且匹配不会影响别的位置答案 sequence 计 ...
- Partition:Partiton Scheme是否指定Next Used?
在SQL Server中,为Partition Scheme多次指定Next Used,不会出错,最后一次指定的FileGroup是Partition Scheme的Next Used,建议,在执行P ...
- Android业务组件化之URL Scheme使用
前言: 最近公司业务发展迅速,单一的项目工程不再适合公司发展需要,所以开始推进公司APP业务组件化,很荣幸自己能够牵头做这件事,经过研究实现组件化的通信方案通过URL Scheme,所以想着现在还是在 ...
- iOS - URL Scheme 操作
推荐JLRoutes路由跳转 NSScanner 在寻找更加灵活的页面跳转和通知,我遇见了JLRoutes,从而学习使用URL Scheme来定义界面入口.以前从来没有使用过,不过很多大厂和流行的框架 ...
- 自定义 URL Scheme 完全指南
本文由 Migrant 翻译自 The Complete Tutorial on iOS/iPhone Custom URL Schemes,转载请注明出处. 注意: 自从自定义 URL 的引入,本文 ...
- JS魔法堂:Data URI Scheme介绍
一.前言 上周五公司内部的Any Topic Conf.上我和同事们分享了这个主题,有同事说这个有用,有同事说这个没啥用,后来还延伸到网站性能的话题上,大家讨论的激烈程度让我觉得这次选题还不错.本篇先 ...
- CSS魔法堂:小结一下Box Model与Positioning Scheme
前言 对于Box Model和Positioning Scheme中3种定位模式的细节,已经通过以下几篇文章记录了我对其的理解和思考. <CSS魔法堂:重新认识Box Model.IFC.B ...
- Project、Target、Workspace and Scheme
前言 今天有人问我Target和Project是什么关系?额...学习iOS开发都知道Target和Project的关系.这里我就简单的做了一个总结,而且加入的Scheme和Workspace.如果不 ...
- 自定义 URL Scheme 完全指南(转载)
iPhone / iOS SDK 最酷的特性之一就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme 用于从浏览器或其他应用中启动本应用. 注册自定义 URL Scheme ...
随机推荐
- nginx日志修改时间格式为年月日时分秒
先解除这段注释,使用自定义日志格式 $time_iso8601 生成格式:--20T09::+: $time_local 生成格式: /Apr/::: + 还是选择年月日时分秒看起来舒服一点
- 简单描述如何安装配置一个apache开源版hadoop,只描述即可,无需列出完整步骤,能列出步骤更好
1 ) 安装JDK并配置环境变量(/etc/profile) 2) 关闭防火墙 3) 配置hosts文件,方便hadoop通过主机名访问(/etc/hosts) 4) 设置ssh免密码登录 5) 解压 ...
- 用 Python 写一个 NoSQL 数据库Python
NoSQL 这个词在近些年正变得随处可见. 但是到底 “NoSQL” 指的是什么? 它是如何并且为什么这么有用? 在本文, 我们将会通过纯 Python (我比较喜欢叫它, “轻结构化的伪代码”) 写 ...
- golang之结构体
Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. Go语言通过用自定义的方式形成新的类型,结构体是类型中带有成员的复合类型. Go 语言中的类型可以被实例化,使用new或&a ...
- SVN failed: 405 Method Not Allowed
SVN update 时,错误:PROPFIND request on '/svn/xxxx' failed: 405 Method Not Allowed. 解决办法如下: 第一步:查看SVN服务器 ...
- 多线程 多进程 协程 Queue(爬虫代码)
快速理解多进程与多线程以及协程的使用场合和特点 首先我们来了解下python中的进程,线程以及协程! 从计算机硬件角度: 计算机的核心是CPU,承担了所有的计算任务.一个CPU,在一个时间切片里只能运 ...
- 跟阿根一起学Java Web开发二:使用Ajax技术及XML与JSON实现输出
如今B/S结构的系统使用Ajax技术是再平常只是的了.今天我们就来探讨下在JSPGenSDF第四版中:怎样使用Ajax技术.怎样输出XML文件及JSON格式数据输出. 怎样搭建一个最基础的JSPGen ...
- 无线传感网络协议——Smart Mesh IP
前言: SmartMesh IP 专为实现 IP 兼容性而设计,并基于 6LoWPAN 和 802.15.4e 标准.SmartMesh IP 产品线实现了网络适应性.可靠性和可扩展性水平,并拥有高级 ...
- 深入浅出Cocoa之消息(二)-详解动态方法决议(Dynamic Method Resolution) 【转】
序言 如果我们在 Objective C 中向一个对象发送它无法处理的消息,会出现什么情况呢?根据前文<深入浅出Cocoa之消息>的介绍,我们知道发送消息是通过 objc_send(id, ...
- 2019.11.12htmlhomework1
ex: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...