AcWing 404. 婚礼
大型补档计划
根据题意,显然只有新郎这边可能存在矛盾,考虑这边怎么放即可,新娘那边的放法与这边正好相反且一一对应。
显然对于两个约束条件是一对矛盾,开始我以为可以用并查集,后来发现输出方案的时候,如果两者都可以的话不会选了只能乱选,有可能会限制死某些变量,需要指数级别 \(dfs\) 搞,然后就放弃了。
设 \([0, n - 1]\) 是这个位置放妻子,\([n, 2 * n - 1]\) 是这个位置放丈夫。
对于这种矛盾 \(a, b\),构建 2-SAT 模型就是连边 \((a, opp[b]), (b, opp[a])\) (opp表示同样位置的对应元素。)
方案输出按照板子输出即可,注意输出的是新娘一边的,正好我们求的新郎正相反
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int N = 65, M = 2005;
int n, m, dfn[N], low[N], dfncnt, s[N], top, c[N], cnt;
bool ins[N];
int opp(int x) { return x <= n - 1 ? x + n : x - n; }
int head[N], numE = 0;
struct E{
int next, v;
} e[M];
void add(int u, int v) {
e[++numE] = (E) { head[u], v };
head[u] = numE;
}
void tarjan(int u) {
dfn[u] = low[u] = ++dfncnt;
ins[u] = true, s[++top] = u;
for (int i = head[u]; i; i = e[i].next) {
int v = e[i].v;
if (!dfn[v]) tarjan(v), low[u] = min(low[u], low[v]);
else if(ins[v]) low[u] = min(low[u], dfn[v]);
}
if (dfn[u] == low[u]) {
int v; ++cnt;
do {
v = s[top--], c[v] = cnt, ins[v] = false;
} while (v != u);
}
}
void clear() {
memset(dfn, 0, sizeof dfn);
memset(head, 0, sizeof head);
memset(c, 0, sizeof c);
memset(ins, false, sizeof ins);
numE = dfncnt = top = cnt = 0;
}
bool check() {
for (int i = 0; i <= n - 1; i++) if (c[i] == c[i + n]) return false;
return true;
}
int main() {
while(scanf("%d%d", &n, &m), n || m) {
clear();
add(0, n);
for (int i = 1, x, y; i <= m; i++) {
char a, b; scanf("%d%c%d%c", &x, &a, &y, &b);
if (a == 'h') x += n;
if (b == 'h') y += n;
add(x, opp(y)), add(y, opp(x));
}
for (int i = 0; i <= 2 * n - 1; i ++) if (!dfn[i]) tarjan(i);
if (!check()) puts("bad luck");
else {
for (int i = 1; i <= n - 1; i++) printf("%d%c ", i, c[i] < c[i + n] ? 'h' : 'w');
puts("");
}
}
}
AcWing 404. 婚礼的更多相关文章
- 【特别推荐】10款唯美浪漫的婚礼 & 结婚纪念网站模板
互联网的重要性不言而喻,如今我们的生活已经完全离不开网络.这里给大家分享一组唯美浪漫的结婚邀请网站以及婚礼请柬网站模板,如果你也正想制作这样的网站,相信这些漂亮的网站模板能够带给你很大的帮助,让你快速 ...
- ACWING基础算法(三)
双指针算法. 相向双指针,指的是在算法的一开始,两根指针分别位于数组/字符串的两端,并相向行走. ACWING 的一道裸题(不知道为啥进不去404):最长连续不重复子序列 输入 5 1 2 2 3 5 ...
- Register-SPWorkflowService 404
最近需要做一个SharePoint 2013工作流演示环境. 于是在自己的本子上安装了一个虚拟机. 虚拟机操作系统是Windows Server 2012 R2,计划把AD.SQL Server 20 ...
- WinServer2008R2 + IIS 7.5 + .NET4.0 经典模式 运行WebAPI程序报404错误的解决方案
在Windows Server 2008 R2系统下,IIS 7.5 + .NET Framework 4.0的运行环境,以经典模式(Classic Mode)部署一个用.NET 4.0编译的 Web ...
- sqoop:Failed to download file from http://hdp01:8080/resources//oracle-jdbc-driver.jar due to HTTP error: HTTP Error 404: Not Found
环境:ambari2.3,centos7,sqoop1.4.6 问题描述:通过ambari安装了sqoop,又添加了oracle驱动配置,如下: 保存配置后,重启sqoop报错:http://hdp0 ...
- thinkphp访问不存在的模块或者方法跳转到404页面
使用的thinkphp 版本是3.2.0, 在config.php中配置 404地址,即可: 'TMPL_EXCEPTION_FILE' => './Application/Home/View/ ...
- 网站设置404页面 --nginx
有的时候根据域名要先知道用的什么web 服务器 最简单的 http://tool.chinaz.com/pagestatus/ 输入域名,看返回的头部信息 用的那个web浏览器 下面的方法也是根据头 ...
- HTTP 错误 404.3 – Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
今天,在vs2013中新建了一个placard.json文件,当我用jq读取它的时候,去提示404,直接在浏览器访问这个文件,提示: HTTP 错误 404.3 – Not Found 由于扩展配置问 ...
- [转载]jquery版小型婚礼(可动态添加祝福语)
原文链接:http://www.cnblogs.com/tattoo/p/3788019.html 前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我 的百度生涯,一直 ...
随机推荐
- 源码分析:ReentrantReadWriteLock之读写锁
简介 ReentrantReadWriteLock 从字面意思可以看出,是和重入.读写有关系的锁,实际上 ReentrantReadWriteLock 确实也是支持可重入的读写锁,并且支持公平和非公平 ...
- mysql建立索引,实际工作中建立索引的示例
1.根据业务场景建立相应的组合索引,一般是在主键,外键,常用来筛选查询的字段,按照字段之间组合的紧密程度,建立一定顺序的索引. 例如:为 t_org_exam_join_member_day 建立索 ...
- python + selenium 搭建环境步骤
介绍在windows下,selenium python的安装以及配置.1.首先要下载必要的安装工具. 下载python,我安装的python3.0版本,根据你自己的需要安装 下载setuptools ...
- arm-linux校时和时钟同步
# 将时间写到系统 date 2020.08.25-14:02:00 # 将时间同步到硬件时钟芯片 hwclock -f /dev/rtc1 -w # 将时间从硬件时钟芯片同步到系统 hwclock ...
- 字典序问题(Java)
Description 在数据加密和数据压缩中常需要对特殊的字符串进行编码.给定的字母表A由 26 个小写英文字母组成A={a,b,-,z}.该字母表产生的升序字符串是指字符串中字母按照从左到右出现的 ...
- LeetCode 中等题解(3)
34 在排序数组中查找元素的第一个和最后一个位置 Question 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂 ...
- jsonp和普通的ajax区别
1.请求类型.返回类型不一样 2.返回数据类型
- 为什么 @Value 可以获取配置中心的值?
hello,大家好,我是小黑,好久不见~~ 这是关于配置中心的系列文章,应该会分多篇发布,内容大致包括: 1.Spring 是如何实现 @Value 注入的 2.一个简易版配置中心的关键技术 3.开源 ...
- 下载器Folx如何实现排队下载功能
用户在下载多个文件时,当然会希望这些文件都能同时下载,以达到短时间内完成下载任务的目的.但另一方面来说,同时下载过多文件,会分散带宽资源,降低了每个文件的下载速度,从而导致下载时间的延长. 为了实现多 ...
- MGR(MySQL Group Replication)部署测试
1. 环境说明 192.168.11.131 mgr1 主节点 192.168.11.132 mgr2 从节点 192.168.11.133 mgr3 从节点 2. 在mgr1.mgr2.mgr3上安 ...