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\) ...
随机推荐
- Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) C - Jon Snow and his Favourite Number
地址:http://codeforces.com/contest/768/problem/C 题目: C. Jon Snow and his Favourite Number time limit p ...
- Loadrunner自带协议分析工具:Protocol Advisor
录制脚本之前,选对协议很关键,否则错误的协议会导致Virtual User Generator 录制不到脚本,或录制的脚本不完整,有些应用可能需要选择多个协议才能完整的记录 客户端与服务器端的请求. ...
- CSS中定义a:link、a:visited、a:hover、a:active顺序
a :link.a:hover.a:visited这几个元素,定义CSS时候的顺序不同,也会直接导致链接显示的效果不同. eg:让未访问链接颜色为red,活动链接为yellow,已访问链接为green ...
- 如何释放linux cache占用的内存
[root@prd-fygl-app-01 ~]# free -m total used free shared buffers ...
- MVc分页【关于使用扩展方法实现MVc分页】
近期对MVc自定义分页作了一下小研究下面把他记下来 下述代1,2,3里面的代码可以直接拷贝,4以后的根据情况自己选定 1.在后台任写如下的扩展方法(任一类库都可以,但是用时得引用命名空间) // 添加 ...
- JS 中根据iframe子页面自动iframe高度
注意:为使页面有更好的兼容性,在使用以下代码前,请将aspx页中头部的<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional ...
- mysql字符串分割操作
SELECT '1,2,3,4,5,6,7,8' FROM dual; -- 列转行分割 ),) FROM () a JOIN mysql.help_topic b ); -- 测试 ),) as p ...
- Java搞笑注释(佛-)
// _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\____ // . ' \\| ...
- hadoop随手笔记
1.Hadoop Streaming 是为了方便不太熟悉java用户编写MR程序的工具.用户可以将任何可执行文件(C++)或者脚本(python,ruby)作为Mapper/Reducer, 提高了效 ...
- hadoop的安装配置
资源下载路径:https://archive.cloudera.com/cdh5/cdh/5/:https://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0 ...