P3825-[NOI2017]游戏【2-SAT】

正题

题目链接:https://www.luogu.com.cn/problem/P3825


题目大意

nnn场比赛,对于场地aaa不能用赛车AAAb,cb,cb,c以此类推),对于场地xxx可以用任何赛车。然后给定mmm条条件形如iIjJi\ I\ j\ Ji I j J表示在第iii场比赛使用赛车III的话那么必须在第jjj场比赛使用赛车JJJ

求一组合法安排方案


解题思路

因为对于场地xxx我们有三种选择方法,所以这是一个3−SAT3-SAT3SAT问题,无法计算。而因为xxx场地数量很少,我们可以枚举每个场地xxx使用哪辆车(是场地aaa还是场地bbb)即可。

然后就是很普通的2−SAT2-SAT2SAT问题了,时间复杂度O(2dn)O(2^dn)O(2dn)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
#define p(n,k) (((n)-1)*6+(k)+1)
using namespace std;
// 0选a 1不选择a 2选择b 3不选择b 4选择c 5不选择c 
const int N=5e4*6;
struct node{int to,next;
}a[N*8];
struct quee{int a,b,va,vb;
}q[N];
int n,d,m,tot,scc,cnt,ls[N];
int dfn[N],low[N],color[N];
bool ins[N];char s[N];
stack<int> S;
void addl(int x,int y,int w){if(w)addl(y,x,0);a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;return;
}
void tarjan(int x){dfn[x]=low[x]=++cnt;S.push(x);ins[x]=1;for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(!dfn[y])tarjan(y),low[x]=min(low[x],low[y]);else if(ins[y])low[x]=min(low[x],dfn[y]);}if(dfn[x]==low[x]){++scc;while(S.top()!=x){color[S.top()]=scc;ins[S.top()]=0;S.pop();}color[S.top()]=scc;ins[S.top()]=0;S.pop();}return;
}
bool solve(){memset(ls,0,sizeof(ls));memset(dfn,0,sizeof(dfn));cnt=scc=tot=0;for(int i=1;i<=n;i++){if(s[i]=='a'){addl(p(i,0),p(i,1),0);//不能选a addl(p(i,2),p(i,5),1);//选b不选c addl(p(i,4),p(i,3),1);//选c不选b }if(s[i]=='b'){addl(p(i,2),p(i,3),0);//不能选b addl(p(i,0),p(i,5),1);//选a不选c addl(p(i,4),p(i,1),1);//选c不选a }if(s[i]=='c'){addl(p(i,4),p(i,5),0);//不能选caddl(p(i,0),p(i,3),1);//选a不选baddl(p(i,2),p(i,1),1);//选b不选a }}for(int i=1;i<=m;i++){addl(p(q[i].a,q[i].va),p(q[i].b,q[i].vb),0);addl(p(q[i].b,q[i].vb+1),p(q[i].a,q[i].va+1),0);}for(int i=1;i<=n*6;i++)if(!dfn[i])tarjan(i);for(int i=1;i<=n;i++)if(color[p(i,0)]==color[p(i,1)]||color[p(i,2)]==color[p(i,3)]||color[p(i,4)]==color[p(i,5)]){return 0;}for(int i=1;i<=n;i++){if(color[p(i,0)]<color[p(i,1)])printf("A");else if(color[p(i,2)]<color[p(i,3)])printf("B");else if(color[p(i,4)]<color[p(i,5)])printf("C");}return 1;
}
int main()
{scanf("%d%d",&n,&d);scanf("%s",s+1);d=0;int wz[10];for(int i=1;i<=n;i++)if(s[i]=='x')wz[++d]=i;scanf("%d",&m);for(int i=1;i<=m;i++){int a,b,va,vb;char oa[3],ob[3];scanf("%d %s %d %s",&q[i].a,oa,&q[i].b,ob);if(oa[0]=='A')va=0;else q[i].va=(oa[0]=='B')?2:4;if(ob[0]=='A')vb=0;else q[i].vb=(ob[0]=='B')?2:4;}int MS=1<<d;for(int i=0;i<MS;i++){for(int j=1;j<=d;j++)s[wz[j]]='a'+((i>>j)&1);if(solve())return 0;}printf("-1");
}
/*
5 2
acxax
10
2 B 1 A
3 C 4 C
4 B 3 C
5 B 3 B
2 B 3 A
3 A 2 A
5 B 1 C
3 B 1 B
2 C 4 C
4 B 2 A
*/ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CVPR19 基于图卷积网络的多标签图像识别模型 论文笔记

笔记 旷视研究院的研究员提出了如下模型,用于图像的多标签分类. 该模型与一般模型不一样的一点是,它的分类器是生成的,因此它有一个专门生成分类器的子网络. 网络主要由两部分构成 特征表示子网络,该网络由ResNet-101构成,即蓝色框圈出的部分.分类器生成子网络,该网络由3个…

日行千里,全凭“车”况,为什么我们要升级平台

历经一个半月的时间&#xff0c;不管是叫工业互联网平台还是叫工业大数据平台&#xff0c;从1.0版本升级到2.0版本&#xff0c;升级部分包括&#xff1a;客户端&#xff08;网关&#xff09;、服务端&#xff08;数据接收、数据处理、计算服务&#xff09;、底层数据库结构、WE…

朋友

朋友 题目大意&#xff1a; 有两堆数&#xff0c;只有第一堆数会和第二堆数中比自己小的数交“朋友”&#xff0c;问有多少对朋友 原题&#xff1a; 题目描述 mxy 即将前往新世界。 在前往新世界的过程中&#xff0c;ta 遇见了两种人。一种是只和 lowb 做朋友&#xff0c;…

好代码是管出来的——.Net Core中的单元测试与代码覆盖率

测试对于软件来说&#xff0c;是保证其质量的一个重要过程&#xff0c;而测试又分为很多种&#xff0c;单元测试、集成测试、系统测试、压力测试等等&#xff0c;不同的测试的测试粒度和测试目标也不同&#xff0c;如单元测试关注每一行代码&#xff0c;集成测试关注的是多个模…

P3694-邦邦的大合唱站队【状压dp】

正题 题目链接:https://www.luogu.com.cn/problem/P3694 题目大意 nnn个人&#xff0c;有mmm个队伍&#xff0c;每个人都属于一个队伍。要求叫出一些人来&#xff0c;然后任意插入出来的空隙中使得同一队的人在一起。求最少出列人数。 解题思路 如果知道最终的队列就可以十分…

数字图像处理作业

图像处理作业 1 取sT(r)11(mr)EsT(r)\frac{1}{1(\frac{m}{r})^E}sT(r)1(rm​)E1​ 其中rrr为原始亮度&#xff0c;mmm为输入区间的中点&#xff0c;EEE描述曲线的陡峭程度 2 一幅8灰度级图像具有如下所示的直方图&#xff0c;求直方图均衡后的灰度级和对应概率&#xff0c;…

【差分】侦察兵

侦察兵 题目大意&#xff1a; 给出一个图&#xff0c;再给一些点&#xff0c;求出这些点左上角和右下角的数之和 原题&#xff1a; 题目描述 mxy 沉迷于一个辣鸡游戏不可自拔。 游戏地图是一个 n*n 的矩形&#xff0c;在每个单位格子上有一个数字&#xff0c;代表当前位置…

深港澳大湾区(深圳).NET技术交流会圆满成功

2018年7月7日一场以.NET Core微服务和机器学习为主题的交流会成功在深圳职业技术学院落下帷幕。这次活动在短短的一周时间内&#xff0c;报名人数超过了170人&#xff0c;除了一些同学临时有事&#xff0c;基本都到现场了&#xff0c;特别感谢深职院的软创工作室对这次活动的支…

P5322-[BJOI2019]排兵布阵【背包】

正题 题目链接:https://www.luogu.com.cnp/problem/P1768 题目大意 nnn个城池&#xff0c;有sss个玩家对于每个城池有一定的兵。对于所有玩家的每个城池都有派兵一个人数&#xff0c;要求派兵人数之和为mmm。如果你的派兵数列每大于一个玩家派兵数量的两倍那么就可以获得该城池…

图像处理作业二

作业信息 1、证明3.44和3.45的正确性 g(x,y)1K∑i1Kgi(x,y)g(x,y)\frac{1}{K}\sum_{i1}^K g_i(x,y)g(x,y)K1​∑i1K​gi​(x,y) E[g(x,y)]f(x,y)E[n(x,y)]f(x,y)E[g(x,y)]f(x,y)E[n(x,y)]f(x,y)E[g(x,y)]f(x,y)E[n(x,y)]f(x,y) D[g]E[(g−E[g])2]E[g2]−E[g]2E[f22f(n1n2...nK…

【模拟】遭遇战

遭遇战 题目大意&#xff1a; 在一个nn的范围内两个人在跑&#xff08;san&#xff09;步&#xff0c;问他们在哪里相遇 原题 题目描述 mxy 沉迷于一个辣鸡游戏不可自拔。 游戏地图是一个 n*n 的矩形&#xff0c;左上角为&#xff08;0,0&#xff09;&#xff0c;右下角为…

.Net Core开发日志——Peachpie

.Net Core的生态圈随着开源社区的力量不断注入至其中&#xff0c;正在变得越来越强盛&#xff0c;并且不时得就出现些有意思的项目&#xff0c;比如Peachpie&#xff0c;它使得PHP的代码迁移到.Net Core项目变得可能。从创建简单的入门程序开始可以更容易地体会其特性。首先安装…

P5268-[SNOI2017]一个简单的询问【莫队】

正题 题目链接:https://www.luogu.com.cn/problem/P5268 题目大意 nnn个数的一个序列&#xff0c;定义get(l1,r1,x)get(l_1,r_1,x)get(l1​,r1​,x)表示区间[l1,r1][l_1,r_1][l1​,r1​]中有多少个xxx。 每次询问(l1,r1,l2,r2)(l_1,r_1,l_2,r_2)(l1​,r1​,l2​,r2​)求∑x∞…

图像处理作业第三次

图像处理作业第三次 1.根据书中对傅立叶变换的定义&#xff0c;证明课本165页上有关傅立叶变换的平移性质。 F(u−u0,v−v0)F(u-u_0,v-v_0)F(u−u0​,v−v0​) ∑x0M−1∑y0N−1f(x,y)e−j2π((u−u0)x/M(v−v0)y/N)\sum_{x0}^{M-1}\sum_{y0}^{N-1}f(x,y)e^{-j2\pi((u-u_0)x/M…

初一模拟赛(4.20)

成绩&#xff1a; rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111lyflyflyf400400400100100100100100100100100100100100100222wjjwjjwjj310310310100100100100100100100100100101010333hkyhkyhky300300300100100100100100100100100100000333cyzcyzcyz30…

.NET Core开发日志——Middleware

熟悉ASP.NET架构的开发者一定对于HTTP Modules与HTTP Handlers不陌生。两者的作用主要是对网络请求执行特定的处理工作。而在.NET Core中&#xff0c;它们都被Middleware(中件间)取代了。之前的Http Modules和HTTP Handlers是如下图般处理请求的&#xff1a;现在变成了这样&…

P3850-[TJOI2007]书架【Splay】

正题 题目链接:https://www.luogu.com.cn/problem/P3850 题目大意 一个书架上有nnn本书&#xff0c;进行mmm次插入操作&#xff0c;然后qqq次询问一个位置上的书。 解题思路 用SplaySplaySplay进行插入操作&#xff0c;然后直接查询即可 codecodecode #include<cstdio&g…

【并查集】家族 (ssl 1896)

家族 ssl 1896 题目大意&#xff1a; 合并一些集合&#xff0c;然后判断某两个点是否在同一个集合内 原题&#xff1a; 题目描述 若某个家族人员过于庞大&#xff0c;要判断两个是否是亲戚&#xff0c;确实还很不容易&#xff0c;现在给出某个亲戚关系图&#xff0c;求任…

模式识别作业

模式识别作业 1.说明判别分类器(如logistic回归)与上述特定类别的高斯朴素贝叶斯分类器之间的关系正是logistic回归所采用的形式。 经过第2问更加普遍的推导过程&#xff1a; 对应参数为&#xff1a; 二次项&#xff1a; v[σ112−σ1022σ112σ102,...,σD12−σD022σD12…

Identity Server 4 - Hybrid Flow - Claims

前一篇 Identity Server 4 - Hybrid Flow - MVC客户端身份验证: https://www.cnblogs.com/cgzl/p/9253667.htmlClaims我不知道怎么样翻译这个词比较好, 所以我一般就不翻译了.在前一篇文章里, MVC客户端配置身份认证的时候有这么一句话(Startup的ConfigureServices):JwtSecurit…