bzoj4945
题解:
一眼看过去还以为是3-sat
其实d只有8
那么我们可以枚举每一个x选择哪一个
然后再用2-sat处理
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=,M=N<<,ABC='A'+'B'+'C';
struct Edge{int to,next;}e[M];
int n,m,K,pos[],zz[M],ne[M],mi[N],mj[N],fi[N<<],len,st[N],cot;
char Str[N],hi[N],hj[N];bool Mark[N<<],Un[N<<];
void jb(int x,int y)
{
zz[++len]=y;ne[len]=fi[x];fi[x]=len;
zz[++len]=x^;ne[len]=fi[y^],fi[y^]=len;
}
int dfs(int x)
{
if (Mark[x^]||(n>&&Un[x]))return ;
if (Mark[x])return ;
Mark[x]=;st[++cot]=x;
for (int i=fi[x];i;i=ne[i])
if (!dfs(zz[i]))
{
Un[x]=;
return ;
}
return ;
}
void init()
{
memset(fi,,sizeof fi);
memset(Mark,,sizeof Mark);
memset(Un,,sizeof Un);
}
int pd()
{
len=;int n1,n2;
init();
for (int i=;i<=m;i++)
{
if (hi[i]==Str[mi[i]])continue;
n1=hi[i]>ABC-hi[i]-Str[mi[i]];
if (hj[i]==Str[mj[i]])jb(mi[i]<<|n1,mi[i]<<|n1^);
else n2=hj[i]>ABC-hj[i]-Str[mj[i]],jb(mi[i]<<|n1,mj[i]<<|n2);
}
for (int i=;i<=n;i++)
{
cot=;
if (!dfs(i<<))
{
while (cot)Mark[st[cot--]]=;
if (!dfs(i<<|))return ;
}
}
for (int i=;i<=n;i++)
if (Mark[i<<])putchar(Str[i]=='A'?'B':'A');
else putchar(Str[i]=='C'?'B':'C');
return ;
}
int main()
{
scanf("%d%d%s%d",&n,&K,Str+,&m);
int cnt=;
for (int i=;i<=m;i++)scanf("%d%s%d%s",&mi[i],&hi[i],&mj[i],&hj[i]);
for (int i=;i<=n;i++)
if (Str[i]=='x')pos[cnt++]=i;else Str[i]+='A'-'a';
for (int i=;i<<<K;i++)
{
for (int j=;j<K;j++)Str[pos[j]]='A'+(i>>j&);
if (pd())return ;
}
puts("-1");
return ;
}
bzoj4945的更多相关文章
- 【BZOJ4945】[Noi2017]游戏 2-SAT
[BZOJ4945][Noi2017]游戏 题目描述 题解:2-SAT学艺不精啊! 这题一打眼看上去是个3-SAT?哎?3-SAT不是NPC吗?哎?这题x怎么只有8个?暴力走起! 因为x要么不是A要么 ...
- LG3825/BZOJ4945/LOJ2305 「NOI2017」游戏 dfs+2-SAT
问题描述 LG3825 BZOJ4945 LOJ2305 题解 发现对于每个地图,如果没有\(A,B,C\)地图不可以使用\(a,b,c\),就是一个\(\mathrm{3-SAT}\)问题. 有了这 ...
- 【BZOJ4945】【NOI2017】游戏(搜索,2-sat)
[NOI2017]游戏(搜索,2-sat) 题面 BZOJ的SPJ是假的 兹磁洛谷 题解 如果没有\(x\)地图的影响 这就是一个裸的\(2-sat\)问题 但是现在有不超过\(8\)个\(x\)地图 ...
- [BZOJ4945][Noi2017]游戏 2-sat
对于所有的x,我们枚举他的地图类型,事实上我们只需要枚举前两种地形就可以覆盖所有的情况. 之后就变成了裸的2-sat问题. 对于一个限制,我们分类讨论: 1.h[u]不可选,跳过 2.h[v]不可选, ...
- BZOJ4945 & 洛谷3825 & UOJ317:[NOI2017]游戏——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4945 https://www.luogu.org/problemnew/show/P3825 ht ...
- [bzoj4945][Noi2017]游戏
题目大意:有$n$个位置,有三种数,每个位置只可以填一种数,$d(d\leqslant8)$个位置有三种选择,其他位置只有两种选择.有一些限制,表示第$i$个位置选了某种数,那么第$j$个位置就只能选 ...
- 【BZOJ4945&&UOJ317】游戏(2-sat,拓扑序)
题意: 思路: 输出方案时有一个优秀的性质可以利用: tarjan缩点之后点所属的分量编号是原图的反的拓扑序 所以只需要在两种方案内找到所属分量编号较小的那个就行了,用来满足(i,i')那个限制 #i ...
- 【bzoj4945】[Noi2017]游戏(搜索+2-sat)
bzoj 洛谷 题意: 现在有\(a,b,c\)三种车,每个赛道可能会存在限制:\(a\)表示不能选择\(a\)类型的赛车,\(b,c\)同理:\(x\)表示该赛道不受限制,但\(x\)类型的个数$\ ...
- 并不对劲的bzoj4945:loj2305:uoj317:p3825[NOI2017]游戏
题目大意 2-SAT,其中有\(d\)(\(d\leq 8\))个点是\(3-SAT\). 题解 枚举\(d\)个点不取三个中(假设三个为\(a,b,c\))的哪一个,然后整体变成做\(2-SAT\) ...
随机推荐
- webpack打包静态资源和动态资源
1.对于静态引用的资源: <img src = "static/modelname/imgname.png"> // 修改为下面的写法 <img src = &q ...
- linux下不同服务器间数据传输(wget,scp)
一.wget是Linux下最常用的http/ftp文件下载工具1.wget断点续传,只需要加上-c参数即可,例如:代码:wget-chttp://www.abc.com/abc.zip-Oabc.zi ...
- ABP官方文档翻译 1.6 OWIN集成
OWIN集成 安装 使用 如果在应用程序里既使用ASP.NET MVC也使用ASP.NET Web API,需要在工程里安装Abp.Owin包. 安装 添加Abp.Owin包到主工程里(一般是web工 ...
- optind变量
1.这个变量是在什么地方定义的? 答:系统定义的 2.这个变量在什么场景下使用? 答:在解析命令行参数时会用到 3.这个变量存在的意义? 在每调用一次getopt()或getopt_long()类似函 ...
- C++ 单词接龙
问题描述: 拉姆刚刚开始学习英文字母,对单词排序很感兴趣,他能够迅速确定是否可以将这些单词排列在一个列表中,使得该列表中任何单词的首字母与前一个单词的尾字母相同,力能编写一个计算机程序帮助拉姆进行判断 ...
- mybatis缓存有关的设置和属性
知识点:mybatis缓存相关的设置和属性 重点:每次执行增删改操作后,一二级缓存被清空,是因为标签设置默认属性为 flushCache="true" (1) <!-- 全局 ...
- C#实现日历样式的下拉式计算器
C#实现日历样式的下拉式计算器 原文地址:http://developer.51cto.com/art/201508/487486.htm 如果我们正在做一个类似于库存控制和计费系统的项目,有些部分可 ...
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 A题 Weather Patterns
2017-09-25 15:49:45 writer:pprp 阅读理解,当时没有耐心去读,只要能读懂就大概可以做出来 题意如下: 有四种天气, State 1: snow State 2: rain ...
- RNAseq 流程
https://github.com/twbattaglia/RNAseq-workflow
- RabbitMQ 的路由模式 Topic模式
模型 生产者 package cn.wh; import java.io.IOException; import java.util.concurrent.TimeoutException; impo ...