CF156B Suspects 【逻辑+】

给出n个犯人的n条供述,并且知道有m条是真的

正数代表当前犯人供述该号犯人犯罪

负数代表当前犯人供述该号犯人没有犯罪

例如

+7代表当前犯人供述7号犯罪

-3代表当前犯人供述3号没有犯罪

来想想某人可能犯罪的条件

假设一个人犯罪

那么如果

说其他人犯罪的供述(暂时视作假话)条数+说他没有犯罪的供述(暂时视作假话)条数=n-m(假话条数)

这个式子成立的话

那么这个人就有可能犯罪(因为可能有多个人满足这个条件,而犯人只有一个)

否则

这个人不可能犯罪

那么对可能犯罪的人

如果不止一个

说他犯罪的属于not define

说他没犯罪的属于not define

如果只有一个

说他犯罪的属于true

说他没犯罪的属于lie

那么对不可能犯罪的人

说他犯罪的属于lie

说他没犯罪的属于true

#include <cstdio>
#include <climits>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int NN=1111111;
int tmp[NN];
int y[NN],nono[NN],maybe[NN];
int main(){
#ifndef ONLINE_JUDGE
	freopen("/home/rainto96/in.txt","r",stdin);
#endif
	int n,m;
	cin>>n>>m;
	int yes=0,no=0;
	for(int i=1;i<=n;i++){
		cin>>tmp[i];
		//vis[abs(tmp)]+=tmp/abs(tmp);
		if(tmp[i]>0) y[tmp[i]]++;
		else 	  nono[-tmp[i]]++;
		yes+=tmp[i]>0;
		no+=tmp[i]<0;
	}
	for(int i=1;i<=n;i++){
		maybe[i]=(yes-y[i]+nono[i]==n-m);
	}
	/*char statement[2][2][111]={{"Not defined","TRUETH"},{"Not defined","LIE"}};
	for(int i=1;i<=n;i++){
		if(tmp[i]>0){
			printf("%s\n",statement[1][!maybe[tmp[i]]]);
		}else{
			printf("%s\n",statement[0][maybe[-tmp[i]]]);
		}
	}*/
	int times=0;
	for(int i=1;i<=n;i++)   if(maybe[i]) times++;
	for(int i=1;i<=n;i++){
		if(tmp[i]>0){
			if(maybe[tmp[i]]){
                                if(times>1) cout<<"Not defined"<<endl;
                                else        cout<<"Truth"<<endl;
			}else         cout<<"Lie"<<endl;
		}else{
			if(maybe[-tmp[i]]){
                                if(times>1) cout<<"Not defined"<<endl;
                                else        cout<<"Lie"<<endl;
			}else         cout<<"Truth"<<endl;
		}
	}
	return 0;
}
时间: 2024-10-22 06:22:04

CF156B Suspects 【逻辑+】的相关文章

机器学习—逻辑回归理论简介

下面是转载的内容,主要是介绍逻辑回归的理论知识,先总结一下自己看完的心得 简单来说线性回归就是直接将特征值和其对应的概率进行相乘得到一个结果,逻辑回归则是这样的结果上加上一个逻辑函数 这里选用的就是Sigmoid函数,在坐标尺度很大的情况下类似于阶跃函数 在确认特征对应的权重值也就是回归系数的时候 最常用的方法是最大似然法,EM参数估计,这个是在一阶导数能够有解的前提下 如果一阶导数无法求得解析值,那么一般选取梯度上升法,通过有限次的迭代过程,结合代价函数更新回归系数至收敛 //////////

Oracle 逻辑体系

Oracle 逻辑体系 主题 Oracle 逻辑体系 参考资料 Oracle 逻辑体系 表空间.模式.用户.段.区.块 Oracle中的数据逻辑上存储于表空间,物理上则存储于属于表空间tablespace的数据文件上(DBF文件).表空间的物理体现是一个或多个DBF文件.数据库由一个或多个被称为表空间的逻辑存储单元构成.表空间是数据库恢复的最小单元.表空间是个逻辑上的概念. 模式schema就是指一个用户下所有对象的集合:创建一个新用户,该用户下没有对象则schema不存在,如果创建一个对象,则

linux查看cpu个数,核数,逻辑cpu个数

物理CPU:物理CPU是相对于虚拟CPU而言的概念,指实际存在的处理器,就是我们可以看的见,摸得着的CPU,就是插在主板上面的. 物理核:CPU中包含的物理内核个数,比如我们通常说的双核CPU,单核CPU. 在linux系统下面的/proc/cpuinfo文件的条目中: 1.有多少个不同的physical id就有多少个物理CPU. 2.cpu cores记录了对应的物理CPU(以该条目中的physical id标识)有多少个物理核,现在我们个人使用的单机PC大部分使用的都是双核CPU. 逻辑C

LINUX在逻辑卷基础加盘操作步骤

扩容之前的磁盘状况 [[email protected] ~]# df -h 文件系统             容量 已用 可用已用%%挂载点 /dev/mapper/VolGroup-lv_root 5.3G  2.5G  2.6G  50% / tmpfs                 538M     0  538M   0% /dev/shm /dev/sda1             485M   30M  430M   7% /boot [[email protected] ~]#

Linux高可用集群方案之heartbeat基础原理及逻辑架构

 这篇文章我们主要学习heartbeat高可用集群的基础原理及逻辑架构,以及heartbeat的简单配置  ll  本文导航    · heartbeat之基本原理   · heartbeat之集群组件   · heartbeat之心跳连接   · heartbeat之脑裂(资源争用.资源隔离) · heartbeat之配置文件   · heartbeat至高可用集群配置  ll  要求  掌握heartbeat高可用集群的相关组件及简单配置   heartbeat之基本原理  heartbea

linux操作逻辑分区与交换分区

作业一: 1)   开启Linux系统前添加一块大小为15G的SCSI硬盘 2)   开启系统,右击桌面,打开终端 3)   为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区,大小为5G 4)   格式化主分区为ext3系统 [[email protected] 桌面]# mkfs.ext3 /dev/sdc1 5)   将逻辑分区设置为交换分区 [[email protected] 桌面]# mkswap /dev/sdc5 6)   启用上一步的交换分

从另一个视角看待逻辑回归

摘要 逻辑回归是用在分类问题中,而分类为题有存在两个比较大的方向:分类的结果用数值表是,比如1和0(逻辑回归采用的是这种),或者-1和1(svm采用的),还有一种是以概率的形式来反应,通过概率来说明此样本要一个类的程度即概率.同时分类问题通过适用的场合可以分为:离散和连续,其中决策树分类,贝叶斯分类都是适用离散场景,但是连续场景也可以处理,只是处理起来比较麻烦,而逻辑回归就是用在连续特征空间中的,并把特征空间中的超平面的求解转化为概率进行求解,然后通过概率的形式来找给出分类信息,最后设置一个阈值

RHCE7.0答案之调整逻辑卷

调整逻辑卷配置: 扩展vg, 2.扩展lv, 3.扩展文件系统 扩展文件系统时如果是ext文件系统,使用resize2fs命令,如果是xfs文件系统,则用xfs_growsfs命令 fdisk /dev/vdb, +500M, 转换为8e类型LVM pvcreate /dev/vdb2 vgextend finance /dev/vdb2 lvextend -L 810M /dev/finance/loans xfs_growfs /dev/finance/loans, 若是ext类型,则要用r

逻辑卷管理

逻辑卷管理逻辑卷创建1.fdisk t 8e //修改分区类型2.pvcreate  /dev/sd{a7,b} //创建物理卷    pvs pvdisplay   //查看物理卷信息3.vgcreate  vg0  /dev/sd{a7,b}  //创建卷组    vgs    vgdisplay4.lvcreate -n lv0 -L 15G vg0  //创建逻辑卷组    lvs    lvdisplay5.创建文件系统    mkfs.ext4 /dev/vg0/lv06.挂载