
联赛模拟测试23 D. 真相 思维题
发布日期:2021-05-09 04:44:31
浏览次数:5
分类:博客文章
本文共 1839 字,大约阅读时间需要 6 分钟。
题目描述
分析
最后判断时,我们把所有 \(k\) 相等的说第一类话的人放在一个集合判断这些人说真话时得到的结果是否等于 \(k\) 即可,此时另外的人一定都说假话代码
#include#include #include #include #include #define rg registerconst int maxn=1e6+5,maxm=1e3+5;int t,n,h[maxn],tot=1,val[maxn],sta[maxn],tp,js,allfake,tj[maxn][2],jl,jud2;bool vis[maxn];char s[maxm];struct asd{ int to,nxt,val;}b[maxn];void ad(int aa,int bb,int cc){ b[tot].to=bb; b[tot].nxt=h[aa]; b[tot].val=cc; h[aa]=tot++;}void dfs(int now,int fa,int lat){ if(lat==1) js++; for(rg int i=h[now];i!=-1;i=b[i].nxt){ rg int u=b[i].to; if(u==fa) continue; if(lat==1) dfs(u,now,b[i].val); else dfs(u,now,b[i].val^1); }}void dfs2(int now,int fa,int lat){ if(now==n){ jl=lat; return; } for(rg int i=h[now];i!=-1;i=b[i].nxt){ rg int u=b[i].to; if(u==fa) continue; if(lat==1) dfs2(u,now,b[i].val); else dfs2(u,now,b[i].val^1); }}int main(){ scanf("%d",&t); while(t--){ scanf("%d",&n); tot=1; tp=allfake=0; for(rg int i=0;i<=n;i++){ h[i]=-1; val[i]=0; vis[i]=0; } rg int haha; rg bool jud=0; for(rg int i=1;i<=n;i++){ scanf("%s",s+1); haha=i+1; if(haha>n) haha-=n; if(s[1]=='+'){ ad(haha,i,1); ad(i,haha,1); } else if(s[1]=='-'){ ad(haha,i,0); ad(i,haha,0); } else { scanf("%d",&val[i]); sta[++tp]=i; } } for(rg int i=1;i<=n;i++){ tj[val[i]][0]=tj[val[i]][1]=0; } if(tp==0){ jl=1; dfs2(1,0,1); if((b[tot-2].val^jl)==0) jud=1; } else { for(rg int i=1;i<=tp;i++){ js=0; vis[val[sta[i]]]=1; dfs(sta[i],0,0); allfake+=js; tj[val[sta[i]]][0]+=js; js=0; dfs(sta[i],0,1); tj[val[sta[i]]][1]+=js; } for(rg int i=1;i<=tp;i++){ if(allfake-tj[val[sta[i]]][0]+tj[val[sta[i]]][1]==val[sta[i]]) jud=1; } if(vis[allfake]==0) jud=1; } if(!jud) printf("inconsistent\n"); else printf("consistent\n"); } return 0;}
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月15日 01时50分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
技术美术面试问题整理
2021-05-08
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2021-05-08
js求阶乘
2021-05-08
python-day3 for语句完整使用
2021-05-08
基于LabVIEW的入门指南
2021-05-08
weblogic之cve-2015-4852
2021-05-08
Java注释
2021-05-08
C++ 函数重载
2021-05-08
使用mybatis-generator生成底层
2021-05-08
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2021-05-08
lvs+keepalive构建高可用集群
2021-05-08
6 个 Linux 运维典型问题
2021-05-08
取消vim打开文件全是黄色方法
2021-05-08
一个系统部署多个tomcat实例
2021-05-08
使用QT实现一个简单的登陆对话框(纯代码实现C++)
2021-05-08
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
2021-05-08
GLFW 源码 下载-编译-使用/GLAD配置
2021-05-08