POJ 3683 Priest John's Busiest Day (2-SAT)
题意:有n对新人要在同一天结婚。结婚时间为Ti到Di,这里有时长为Si的一个仪式需要神父出席。神父可以在Ti-(Ti+Si)这段时间出席也可以在(Di-Si)-Si这段时间。问神父能否出席所有仪式,如果可以输出一组时间安排。
思路:2-SAT。神父可以在开始出席也可以在结束时候出席,要求与其他出席时间没有冲突,这样建图计算即可。另一一定要弄清楚true和false代表的含义。
#include <cstdio>
#include <cmath>
#include <vector>
#include <cstring>
#include <string>
#include <iostream>
using namespace std;
;
struct TwoSAT
{
int n;
vector<];
];
],c;
bool dfs(int x)
{
]) return false;
if(mark[x]) return true;
mark[x]=true;
S[c++]=x;
; i<G[x].size(); ++i)
if(!dfs(G[x][i])) return false;
return true;
}
void init(int n)
{
this->n=n;
; i<n*; ++i) G[i].clear();
memset(mark,,sizeof(mark));
}
void add_clause(int x,int xval,int y,int yval)
{
x=x*+xval;
y=y*+yval;
G[x^].push_back(y);
G[y^].push_back(x);
}
bool solve()
{
; i<n*; i+=)
{
])
{
c=;
if(!dfs(i))
{
) mark[S[--c]]=false;
)) return false;
}
}
}
return true;
}
};
TwoSAT solver;
bool judge(int st1,int ed1,int st2,int ed2)
{
if(st1<=st2&&ed2<=ed1) return true;
if(st2<=st1&&ed1<=ed2) return true;
if(st1<st2&&st2<ed1&&ed2>ed1) return true;
if(st2<st1&&st1<ed2&&ed1>ed2) return true;
return false;
}
int TimetoInt(string str)
{
]-+(str[]-+(str[]-+(str[]-');
return t;
}
string InttoTime(int t)
{
string str;
,b=t%;
str+=(a/+');
str+=(a%+');
str+=':';
str+=(b/+');
str+=(b%+');
return str;
}
],t[][];
int n;
bool solve()
{
solver.init(n);
; i<n; ++i); a<; ++a)
; j<n; ++j) ; b<; ++b)
{
int ast,aed;
int bst,bed;
) ast=t[i][a],aed=t[i][a]+cost[i];
else ast=t[i][a]-cost[i],aed=t[i][a];
)bst=t[j][b],bed=t[j][b]+cost[j];
else bst=t[j][b]-cost[j],bed=t[j][b];
if(judge(ast,aed,bst,bed))
solver.add_clause(i,a^,j,b^);
}
return solver.solve();
}
int main()
{
while(cin>>n)
{
; i<n; ++i)
{
string st,ed;
cin>>st>>ed>>cost[i];
t[i][]=TimetoInt(st);
t[i][]=TimetoInt(ed);
}
if(!solve()) cout<<"NO"<<endl;
else
{
cout<<"YES"<<endl;
; i<*n; i+=)
{
if(!solver.mark[i])
cout<<InttoTime(t[i/][])<<][]+cost[i/])<<endl;
else
cout<<InttoTime(t[i/][]-cost[i/])<<][])<<endl;
}
}
}
;
}
POJ 3683 Priest John's Busiest Day (2-SAT)的更多相关文章
- POJ 3683 Priest John's Busiest Day / OpenJ_Bailian 3788 Priest John's Busiest Day(2-sat问题)
POJ 3683 Priest John's Busiest Day / OpenJ_Bailian 3788 Priest John's Busiest Day(2-sat问题) Descripti ...
- POJ 3683 Priest John's Busiest Day(2-SAT+方案输出)
Priest John's Busiest Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10010 Accep ...
- POJ 3683 Priest John's Busiest Day (2-SAT)
Priest John's Busiest Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6900 Accept ...
- POJ 3683 Priest John's Busiest Day(2-SAT 并输出解)
Description John is the only priest in his town. September 1st is the John's busiest day in a year b ...
- poj - 3683 - Priest John's Busiest Day(2-SAT)
题意:有N场婚礼,每场婚礼的开始时间为Si,结束时间为Ti,每场婚礼有个仪式,历时Di,这个仪式要么在Si时刻开始,要么在Ti-Di时刻开始,问能否安排每场婚礼举行仪式的时间,使主持人John能参加所 ...
- POJ 3683 Priest John's Busiest Day (2-SAT,常规)
题意: 一些人要在同一天进行婚礼,但是牧师只有1个,每一对夫妻都有一个时间范围[s , e]可供牧师选择,且起码要m分钟才主持完毕,但是要么就在 s 就开始,要么就主持到刚好 e 结束.因为人数太多了 ...
- POJ 3683 Priest John's Busiest Day
2-SAT简单题,判断一下两个开区间是否相交 #include<cstdio> #include<cstring> #include<cmath> #include ...
- POJ 3683 Priest John's Busiest Day[2-SAT 构造解]
题意: $n$对$couple$举行仪式,有两个时间段可以选择,问是否可以不冲突举行完,并求方案 两个时间段选择对应一真一假,对于有时间段冲突冲突的两人按照$2-SAT$的规则连边(把不冲突的时间段连 ...
- POJ 3683 Priest John's Busiest Day 【2-Sat】
这是一道裸的2-Sat,只要考虑矛盾条件的判断就好了. 矛盾判断: 对于婚礼现场 x 和 y,x 的第一段可以和 y 的第一段或者第二段矛盾,同理,x 的第二段可以和 y 的第一段或者第二段矛盾,条件 ...
随机推荐
- java, mybatis, 调用mysql存储过程
Map<String, Object> bindinfo = new HashMap<String, Object>(); bindinfo.put(&q ...
- upupw一键绿色免安装环境包
项目测试,选择upupw环境包 下载nginx版本,解压即可使用 任务就是要把我电脑上的项目test.com提供给公司局域网同事访问,如果是apache的话,前面的wampserver已经讲过了. 1 ...
- MySQL之存储引擎MyISAM/InnoDB高并发优化经验
https://www.centos.bz/2011/09/mysql-myisam-innodb-optimization-experience/
- jquery 源码解析 节点遍历
jquery遍历,用于根据其相对于其他元素的关系来查找或选取html元素,以某项选择开始,并沿着这个选择移动,知道移动被称为对dom进行遍历 ☑ <div> 元素是 <ul> ...
- Microsoft Office Project 相关教程 收集
Project教程 如何建立任务间链接 Project教程:[10]如何将项目插入主项目 如何有效使用Project(1)——编制进度计划.保存基准 如何有效使用Project(2)——进度计划的执行 ...
- FPGA图像处理 两路sensor的色调不一致
怎么调?可以让两路sensor的色调一致.
- ShellExecute调用另外一个进程(demo为一个控制led的一段代码)
public enum ShowCommands : int { SW_HIDE = 0, SW_SHOWNORMAL = 1, ...
- Javascript理解this对象
this是函数运行时自动生成的一个内部对象,只能在函数内部使用,但总指向调用它的对象. 通过以下几个例子加深对this的理解. (1)作为函数调用 var name = 'Jenny'; functi ...
- KETTLE 配置资源库
KETTLE 是一款开源的ETL工具,通过图形界面进行设计,可以对数据进行转换.设计好的文件分为两类,一类是trans,一类是job,这些文件可以存储到文件系统中. 也可以存储到数据库中. 如 ...
- 测试一下Word发布刚刚发现通过Word 可以直接发Blog 感觉很新奇,先看看,如果可以呢,将发通知的改了。
刚刚发现通过Word 可以直接发Blog 感觉很新奇,先看看,如果可以呢,将发通知的改了. 刚刚发现通过Word 可以直接发Blog 感觉很新奇,先看看,如果可以呢,将发通知的改了. ...