博客
关于我
联赛模拟测试23 D. 真相 思维题
阅读量:424 次
发布时间:2019-03-06

本文共 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;}

转载地址:http://pgpyz.baihongyu.com/

你可能感兴趣的文章
错题重错之WYT的刷子 单调队列
查看>>
洛谷 P2403 [SDOI2010]所驼门王的宝藏 题解
查看>>
关于结构体的初始化
查看>>
洛谷 P6851 【onu】贪心
查看>>
联赛模拟测试20 B. Walk (建图)
查看>>
联赛模拟测试22 D. 简单计算
查看>>
联赛模拟测试23 D. 真相 思维题
查看>>
莫队学习笔记
查看>>
牛顿迭代学习笔记
查看>>
P3714 [BJOI2017]树的难题 点分治+线段树合并
查看>>
Scala中的空
查看>>
k8s之PV、PVC、StorageClass详解
查看>>
你真的了解Innodb存储引擎?
查看>>
FeWeb基础之JavaScript简介
查看>>
设计模式学习笔记(二十三:解释器模式)
查看>>
使用MongoDB和JSP实现一个简单的购物车系统
查看>>
算法笔记_069:Floyd算法简单介绍(Java)
查看>>
Python学习笔记_05:使用Flask+MySQL实现用户登陆注册以及增删查改操作
查看>>
Deepin_使用Python+MySQL创建工作日志记录
查看>>
dpdk在虚拟机上出错处理
查看>>