bzoj4427【Nwerc2015】Cleaning Pipes清理管道
题目描述
输入格式
输出格式
题解:
- 题目意思一些射线,端点不算交点,相交的射线只能放一个机器人,问是否有方案让每一个交点都被机器人经过;
- 如果A和B有交点,那么A放B不放,A不放B一定放,(多个交于一点也是符合题意的),转化成2-sat求解;
- 翻阅了官解,发现如果有交点A和B连边,二分图判定(因为合法的方案对应了二分图的某一边的点集);
- #include<bits/stdc++.h>
- #define ll long long
- using namespace std;
- const int N=;
- int n,m,tot,id[N][],o=,hd[N<<],dfn[N<<],low[N<<],idx,st[N<<],top,bl[N<<],del[N<<],cnt;
- struct Edge{int v,nt;}E[N*N*];
- struct point{
- int x,y;
- point(int _x=,int _y=):x(_x),y(_y){};
- point operator +(const point&A)const{return point(x+A.x,y+A.y);}
- point operator -(const point&A)const{return point(x-A.x,y-A.y);}
- bool operator ==(const point&A)const{return x==A.x&&y==A.y;}
- int operator *(const point&A)const{return x*A.x+y*A.y;}
- int operator ^(const point&A)const{return x*A.y-y*A.x;}
- }p[N];
- struct line{point a,b;}l[N];
- void Adde(int u,int v){E[o]=(Edge){v,hd[u]};hd[u]=o++;}
- void tarjan(int u){
- dfn[st[++top]=u]=low[u]=++idx;
- for(int i=hd[u];i;i=E[i].nt){
- int v=E[i].v;
- if(!dfn[v])tarjan(v),low[u]=min(low[u],low[v]);
- else if(!del[v])low[u]=min(low[u],dfn[v]);
- }
- if(dfn[u]==low[u]){
- int v;cnt++;
- do{
- bl[v=st[top--]]=cnt;
- del[v]=;
- }while(v!=u);
- }
- }
- bool judge(int i,int j){
- if(l[i].a==l[j].a)return false;
- point a=l[j].a-l[i].a,b=l[j].b-l[i].a,c=l[i].b-l[i].a;
- if((ll)(c^a)*(c^b)>)return false;
- b=l[j].a-l[i].b,c=l[j].b-l[j].a;
- if((ll)(c^a)*(c^b)>)return false;
- return true;
- }
- int main(){
- #ifndef ONLINE_JUDGE
- freopen("bzoj4427.in","r",stdin);
- freopen("bzoj4427.out","w",stdout);
- #endif
- scanf("%d%d",&n,&m);
- for(int i=;i<=n;i++)scanf("%d%d",&p[i].x,&p[i].y);
- for(int i=,x;i<=m;i++){
- scanf("%d",&x);l[i].a=p[x];
- scanf("%d%d",&l[i].b.x,&l[i].b.y);
- id[i][]=++tot;id[i][]=++tot;
- }
- for(int i=;i<=m;i++)
- for(int j=i+;j<=m;j++)if(i!=j&&judge(i,j)){
- Adde(id[i][],id[j][]);
- Adde(id[i][],id[j][]);
- Adde(id[j][],id[i][]);
- Adde(id[j][],id[i][]);
- }
- for(int i=;i<=tot;i++)if(!dfn[i])tarjan(i);
- int fg=;for(int i=;i<=m;i++)if(bl[id[i][]]==bl[id[i][]]){fg=;break;}
- puts(fg?"impossible":"possible");
- return ;
- }
bzoj4427
- #include<bits/stdc++.h>
bzoj4427【Nwerc2015】Cleaning Pipes清理管道的更多相关文章
- BZOJ1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚
1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 414 Solved: ...
- BZOJ 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚
题目 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec Memory Limit: 64 MB Description Farm ...
- BZOJ_1672_[Usaco2005 Dec]Cleaning Shifts 清理牛棚_动态规划+线段树
BZOJ_1672_[Usaco2005 Dec]Cleaning Shifts 清理牛棚_动态规划+线段树 题意: 约翰的奶牛们从小娇生惯养,她们无法容忍牛棚里的任何脏东西.约翰发现,如果要使这群 ...
- P4644 [Usaco2005 Dec]Cleaning Shifts 清理牛棚
P4644 [Usaco2005 Dec]Cleaning Shifts 清理牛棚 你有一段区间需要被覆盖(长度 <= 86,399) 现有 \(n \leq 10000\) 段小线段, 每段可 ...
- [Usaco2005 Dec]Cleaning Shifts 清理牛棚 (DP优化/线段树)
[Usaco2005 Dec] Cleaning Shifts 清理牛棚 题目描述 Farmer John's cows, pampered since birth, have reached new ...
- 【bzoj1672】[USACO2005 Dec]Cleaning Shifts 清理牛棚
题目描述 Farmer John's cows, pampered since birth, have reached new heights of fastidiousness. They now ...
- 【BZOJ1672】[Usaco2005 Dec]Cleaning Shifts 清理牛棚 动态规划
[BZOJ1672][Usaco2005 Dec]Cleaning Shifts Description Farmer John's cows, pampered since birth, have ...
- 洛谷P4644 [USACO2005 Dec]Cleaning Shifts 清理牛棚 [DP,数据结构优化]
题目传送门 清理牛棚 题目描述 Farmer John's cows, pampered since birth, have reached new heights of fastidiousness ...
- 【BZOJ】1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(dp/线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=1672 dp很好想,但是是n^2的..但是可以水过..(5s啊..) 按左端点排序后 f[i]表示取第 ...
随机推荐
- 【RL系列】马尔可夫决策过程——状态价值评价与动作价值评价
请先阅读上两篇文章: [RL系列]马尔可夫决策过程中状态价值函数的一般形式 [RL系列]马尔可夫决策过程与动态编程 状态价值函数,顾名思义,就是用于状态价值评价(SVE)的.典型的问题有“格子世界(G ...
- Windows本地上传源码到Gitee远程仓库
1.下载Git,并安装. 安装时一路默认即可 https://git-scm.com/downloads 验证Git安装成功否 cmd 下输入,出现版本号即成功 git --version 2.生成s ...
- 随手记录-linux-vim使用
- TIME_WAIT 你好!
[root@vm-10-124-66-212 ~]# netstat -an|awk -F ' ' '{print $NF}'|sort |uniq -c |sort -rn|more 5552 TI ...
- 使用sass与compass合并雪碧图(二)
上一篇文章介绍了怎样使用compass合并雪碧图,生成的icons.css文件中单位是px,PC端可以直接在html文件中使用,但在移动端,我们需要根据不同分辨率的屏幕,来缩放图片大小,显然使用px单 ...
- Java面向对象程序设计
北京电子科技学院(BESTI) 实 ...
- Linux环境下Web环境搭建——Nginx
1.安装依赖 yum -y install make gcc gcc-c++ ncurses-devel ##编译环境 yum -y install zlib zlib-devel openssl ...
- 《 Spring1之第二次站立会议(重发)》
< 第二次站立会议(重发)> 昨天,我把找到的代码和协议资料等相关资料在团队里做了相应的汇报: 今天,我对自己找到的代码进行了相关的了解后,把它们在编译环境中进行了编译以及接着对代码进行逐 ...
- WebGL学习笔记四点一
上一章是对图形的变换,这一章的第一节主要介绍了光栅化的过程,在创建多个颜色的三角形的过程中顶点着点器的过程如下 ,1.首先通过attribute的变量从javascript中获取数据,根据drawAr ...
- sprint初步计划(第一天)
一.现状 小组成员初步了解四则运算程序编写大概内容,进行简单的讨论.只知道大概的流程,实际还没做出.现在明确目标是把我们写Java的四则运算变成一个手机APP,关于手机ap,我们还不是很了解,所以需要 ...