zoukankan      html  css  js  c++  java
  • Codeforces 156B. Suspects

    Codeforces Tutorial

    B. Suspects

    Problem Analysis

    小时候最怕这种推理题了(笑哭)
    (accuse_i)表示认为第(i)个人是罪犯的人数
    (defend_i)表示认为第(i)个人不是罪犯的人数
    (neg)表示认为某个人不是罪犯的人数

    [accuse_i=sum_{k=1}^{n}a_k==+i ]

    [defend_i=sum_{k=1}^{n}a_k==-i ]

    [neg=sum_{k=1}^{n}a_k lt 0 ]

    假设(i)是罪犯,(honest)表示说实话的人,那么:

    [honest=accuse_i+neg-defend_i ]

    Acepted Code

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<vector>
    #include<cmath>
    #include<map>
    #include<istream>
    #include<cassert>
    #include<set>
    #define DEBUG(x) cout<<#x<<" = "<<x<<endl
    #define DEBUG2(x,y) cout<<#x<<" = "<<x<<" , "
    <<#y<<" = "<<y<<endl
    using namespace std;
    typedef long long ll;
    const int MAXN=1e5+10;
    int n,m;
    int neg=0;
    int a[MAXN];
    int accuse[MAXN];
    int defend[MAXN];
    int crimer[MAXN];
    int cnt=0;
    int main()
    {
    //    freopen("in.txt","r",stdin);
        scanf("%d%d",&n,&m);
        for(int ii=1;ii<=n ;ii++ ){
            int t;
            scanf("%d",&t);
            a[ii]=t;
            if(t>0)accuse[t]++;
            else defend[-t]++,neg++;
        }
        for(int ii=1;ii<=n ;ii++ ){
            int honest=accuse[ii]+neg-defend[ii];
            if(honest==m){
                crimer[ii]=1;
                cnt++;
            }
        }
        for(int ii=1;ii<=n ;ii++ ){
            int t=a[ii];
            if(t>0){
                if(crimer[t]){
                    if(cnt>1)printf("Not defined
    ");
                    else printf("Truth
    ");
                }
                else printf("Lie
    ");
            }
            else {
                t=-t;
                if(crimer[t]){
                    if(cnt>1)printf("Not defined
    ");
                    else printf("Lie
    ");
                }
                else printf("Truth
    ");
            }
        }
    }
    
    

    Wrong Answer Cases

    What I Learn

    针对不确定情况,在这里是Not defined,采取的策略是获取所有的可能的结果。

    Reference

    https://blog.csdn.net/lxc779760807/article/details/48299753

  • 相关阅读:
    通过应用程序域AppDomain加载和卸载程序集(转自张逸)
    Asp.net 2.0 中获取控件输出的Html代码 (转)
    工作和学习
    查询数据库中的所有表
    观活动板房感怀
    温心之旅
    读书无用论是21世纪最大的阴谋
    我渴望女人,但我更渴望成功
    外面比家里亮
    近来,可好?
  • 原文地址:https://www.cnblogs.com/MalcolmMeng/p/10969636.html
Copyright © 2011-2022 走看看