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

  • 相关阅读:
    产品方法论
    elastic search语句
    计算机科学发展的动力
    理论计算机科学学习网站
    算法学习 howto
    人工智能和机器学习 AI&ML howto
    Deep Learning 和 Knowledge Graph howto
    LISP语言学习资源
    Turing Year 2012
    如何做好计算机科学研究
  • 原文地址:https://www.cnblogs.com/MalcolmMeng/p/10969636.html
Copyright © 2011-2022 走看看