题干:

福尔摩斯是个大侦探,他总是在解决疑难案件。这一次的案件也不例外,案件是这样的:有编号为1到N的N位嫌疑犯,他们其中有一个犯了罪,然后每个嫌疑犯都被询问,“哪一个人犯了罪?”犯罪嫌疑人的答案只能“编号ai的嫌疑犯犯了罪”或者“编号ai的嫌疑犯没有犯罪”。当然嫌疑犯也可以说他自己(ai = i).

福尔摩斯凭着他敏锐的侦探直觉,确定地对华生说,只有M个人说了真话,其余人都是说谎。然后就没有然后了,但华生却想知道哪些人说谎哪些人又是讲真话。这个时候同样聪明的你,被誉为红旗下的名侦探是否愿意秀一下自己的侦探天赋,帮助可怜的华生嘛?

Input

第一行一个整数T(1 <= T <= 10),表示测试数据的组数。

每组数据第一行包含N(1 <= N <=10^5)和M(0 <= M <= N)两个整数,含义见题面。接下来N行,第i行是一个整数+ai或者-ai(1<= ai <= N),如果是+ai,代表第i个人说编号ai犯了罪,如果是-ai,则表示编号ai没有犯罪。

输入数据保证至少存在一个人,使得如果是他犯了罪,则恰好有 M 个人说了真话。

Output

输出为N行,第i行是第i个嫌疑犯的输出。如果第i个嫌疑犯说了是真话,输出“Truth”;如果说谎,则输出“Lie”,如果不确定,则输出“Not defined”。

Sample Input

2
3 2
-1
-2
-3
4 1
+2
-3
+4
-1

Sample Output

Not defined
Not defined
Not defined
Lie
Not defined
Lie
Not defined

解题报告:

这题本来以为是要建图的,但是其实对于判断m个人不太好处理,wjh大佬灵光一闪就有了思路。

in1数组记录有多少个人觉得他犯罪了,in2数组记录有多少个人觉得他没犯罪。all1变量记录总共有多少人的陈述是“犯罪”,all2变量记录总共有多少人的陈述是“没犯罪”。那么对于第i个人 x= in1[i]+all2-in2[i]  就代表  假设第i个人是犯罪的候选人(因为题目说可,只有一个人犯罪了,但是可能有多个人是“可能犯罪的”,以下称之为 候选人),那么有x个人说了真话。如果x==m,那么这个就是候选人。我们枚举每一个人当犯罪者,看通过这个方法可以筛选出多少个候选人。然后分别处理。

如果只有一个候选人,那么就是说谎或者没说谎就是了。

如果有多个候选人,那么如果某个人说的f[i]那个人不在候选人里面,那这个人肯定要么说谎了要么没说谎。如果这个人说的f[i]那个人在候选人里面,那么就输出不确定。

AC代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<string>
#include<vector>
#define mod (1000000007)
using namespace std;
typedef long long ll;
int in1[100100];//犯罪
int in2[100100];//说没犯罪
int f[100100];//关系
bool ans[100100];
int main()
{int t;scanf("%d",&t);while(t--) {int all1=0,all2=0; //总-犯 总-不int n,m;scanf("%d%d",&n,&m);for(int i=1; i<=n; i++) {ans[i]=in1[i]=in2[i]=0;}for(int v,i = 1; i<=n; i++) {scanf("%d",&v);f[i]=v;if(v>0) all1++,in1[v]++;else all2++,in2[-v]++;}int cnt=0;int id;for(int i=1; i<=n; i++) {int tm=in1[i]+all2-in2[i];if(tm==m) {id=i;cnt++;ans[i]=1;}}if(cnt==1) {for(int i=1; i<=n; i++) {if(abs(f[i])==id) { //ans[0])if(f[i]>0) printf("Truth\n");else printf("Lie\n");} else {if(f[i]<0) printf("Truth\n");else printf("Lie\n");}}} else {for(int i=1; i<=n; i++) {if(ans[abs(f[i])]==1) {if(f[i]>0)puts("Not defined");else puts("Not defined");} else {if(f[i]<0) puts("Truth");else puts("Lie");}}}}return 0;
}

【FZU - 2202】犯罪嫌疑人(思维,假装建图,分类讨论)相关推荐

  1. Fzu 2202 犯罪嫌疑人【逻辑推理思维题】好题!

     Problem 2202 犯罪嫌疑人 Accept: 109    Submit: 268 Time Limit: 1000 mSec    Memory Limit : 65536 KB  Pro ...

  2. bzoj 4883 [Lydsy1705月赛]棋盘上的守卫 题解(思维,建图,最小基环森林)

    原题链接: bzoj 题意简述 一个 n ∗ m n*m n∗m的矩阵,要放 n + m n+m n+m个守卫,每个守卫只能守住所在行或所在列(只能选择一个).在 i , j i,j i,j位置上放守 ...

  3. 【FZU - 2254】英语考试(最小生成树,思维,建图)

    题干: 在过三个礼拜,YellowStar有一场专业英语考试,因此它必须着手开始复习. 这天,YellowStar准备了n个需要背的单词,每个单词的长度均为m. YellowSatr准备采用联想记忆法 ...

  4. FZU - 2202 犯罪嫌疑人(逻辑思维+简单模拟)

    题目链接:点击查看 题目大意:给出n和m,代表有n个人,每个人说一句话,指认一个人是无辜还是罪犯,总共有m个人说了真话,问每个人说话的真实性 题目分析:一拿到这个题目我是懵逼的..因为n给到了1e5, ...

  5. 视觉SLAM笔记(60) 建图

    视觉SLAM笔记(60) 建图 1. 概述 2. 用处 1. 概述 建图(Mapping),本应该是 SLAM 的两大目标之一 因为 SLAM 被称为同时定位与建图 之前讨论的都是定位问题,包括通过特 ...

  6. 男生和女生(思维建图,最大独立集问题)

    男生和女生(思维建图,最大独立集问题) 问题描述 在大学二年级,一些人开始了同学之间罗曼蒂克关系的研究.有"罗曼蒂克"关系是针对男生和女生之间的关系而言的.研究的原因是找到满足以下 ...

  7. CodeForces - 1529F It‘s a bird! No, it‘s a plane! No, it‘s AaParsa!(最短路+思维建图)

    题目链接:点击查看 题目大意:给出 nnn 个点(从 000 开始编号)和 mmm 条边的有向带权图,不过 mmm 条边是动态的,经过 ttt 秒后,第 iii 条边就从 ai−>bi,cia_ ...

  8. CodeForces - 1422D Returning Home(最短路+思维建图)

    题目链接:点击查看 题目大意:给出一个 n * n 的二维平面,现在要从点 ( sx , sy ) 到达点 ( fx , fy ),在平面上有 m 个传送门,共有两次操作: 向上.下.左.右移动一个单 ...

  9. ZZULIOJ 2131 Can Win【思维建图+最大流】

    2131: Can Win Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 479  Solved: 61 SubmitStatusWeb Board ...

最新文章

  1. VS2005 和 SQL Server 2005 安装顺序不同会发生什么?
  2. Mqtt paho 回调函数触发机制跟踪
  3. boost::safe_numerics::cpp相关的测试程序
  4. 树莓派超声波模块测距
  5. 详解Java多线程编程中LockSupport类的线程阻塞用法
  6. 人工智能(腾讯AI)-身份证识别技术使用接口说明
  7. Excel VBA 删除 表格中的图片
  8. 通过python操作GeoLite2-City.mmdb库将nginx日志访问IP转换为城市写入数据库
  9. APP消息推送后端java实现
  10. qq输入法自定义短语并在手机qq输入法使用
  11. 电脑开机内存占用过高处理
  12. JBE、JNBE、JA、JL指令详解(从原理上)
  13. 图片高斯模糊效果的实现
  14. SSE指令集加速运算
  15. 【海康威视单个摄像头读取视频流并保存本地】
  16. 台式计算机用u盘给电脑安装系统,电脑台式机用u盘装系统教程
  17. POJ3179 Corral the Cows 离散化 二分 前缀和
  18. wordpress最佳架构_2020年最受欢迎和最佳WordPress主题(专家精选)
  19. oracle数据库培训
  20. Mysql数据库官方简介

热门文章

  1. public protect private继承
  2. Not Equal on a Segment CodeForces - 622C
  3. android mysql sqlite_Android SQLite数据库基本操作方法
  4. 为什么火狐浏览器中点击按钮失效_各种浏览器审查、监听http头工具介绍
  5. java添加信息_java – 向异常添加信息
  6. fir fpga 不同截止频率_学习FPGA将来的出路在哪里?
  7. linux编译ffmepg,在Ubuntu下编译FFmpeg
  8. java knn分类_返回2个或更多最近邻居的KNN算法
  9. python多线程logger_python多线程logger_Dblogger:一个Python语言实现支持多进程和多线程日志打印高效Python日志库......
  10. 属于db模式缺点的是什么_详解 Seata Golang 客户端 AT 模式及其使用