zoukankan      html  css  js  c++  java
  • codeforces --- Round #250 (Div. 2) A. The Child and Homework

    <传送门>

    这题就是一个坑,尼玛wa了一大片啊。

    自己被hack了,比赛结束后改了又wa两次才过。

    【题目大意】

    其实就是一个猜题小技巧(联系自己初中考试的时候怎么猜题的,这题就好理解多了)。
    这位同学是这样来选答案的:
    1.如果有一些选项长度至少比其他所有的描述短两倍,或至少超过所有其他的描述的两倍,那么孩子认为这个选择很可能是正确的。
    2.如果正好满足以上其中一种条件(重点),这个同学就会选择它,否则就选C.
    给你一个选择题,让你选择出这个同学将会选择的答案。

    【题目分析】

    首先,这个题目就是一个模拟,模拟本身不难,想一下就有思路了,但是只怪很多人都没看清题目,只怪审题不仔细啊。

    题目里面有句话是很关键的:If there is exactly one great choice then the child chooses it.

    也就是说,如果两个条件都满足的话,这位同学就不知道哪个的正确概率大,所以他又转过来选C。

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    //    freopen("cin.txt","r",stdin);
        int i,j;
        int len[5];
        char str[4][200];
        for(i=0;i<4;i++)
        {
            scanf("%s",str[i]);
            len[i]=strlen(str[i])-2;
        }
        int Find1=0,mark1;
        for(i=0;i<4;i++)
        {
            if(len[i]*6<=(len[(i+1)%4]+len[(i+2)%4]+len[(i+3)%4]))   //找到了有可能符合条件的选项
            {
                Find1=1;
                mark1=i;
    //            cout<<"if-1"<<endl;
                for(j=0;j<4;j++)    //继续判断
                {
                    if(j!=i)
                    {
                        if(len[i]*2>len[j])
                        {
                            Find1=2;  //不符合
                            break;
                        }
                    }
                }
                if(Find1==1)  //判断一遍后任然成立,那就说明这个选项符合
                    break;
            }
        }
        int Find2=0,mark2;
        for(i=0;i<4;i++)
        {
           if(len[i]*6>=(len[(i+1)%4]+len[(i+2)%4]+len[(i+3)%4]))   //找到了有可能符合条件的选项
            {
                Find2=1;
                mark2=i;
    //            cout<<"if-2"<<endl;
                for(j=0;j<4;j++)    //继续判断
                {
                    if(j!=i)
                    {
                        if(len[i]<len[j]*2)
                        {
                            Find2=2;  //不符合
                            break;
                        }
                    }
                }
                if(Find2==1)  //判断一遍后任然成立,那就说明这个选项符合
                    break;
            }
        }
    //    cout<<"mark="<<mark<<endl;
        if(Find1==1&&Find2==1)
        {
            printf("C
    ");
            return 0;
        }
        if(Find1==1)
            printf("%c
    ",mark1+'A');
        else if(Find2==1)
            printf("%c
    ",mark2+'A');
        else
            printf("C
    ");
        return 0;
    }
    View Code
  • 相关阅读:
    word设置的密码忘了怎么办?
    Navicat Report Viewer 设置 HTTP 的方法
    如何处理Navicat Report Viewer 报表
    excel密码忘记了怎么办
    Beyond Compare文本比较搜索功能详解
    Popular Cows POJ
    Problem B. Harvest of Apples HDU
    网络流模型整理
    The Shortest Statement CodeForces
    Vasya and Multisets CodeForces
  • 原文地址:https://www.cnblogs.com/crazyacking/p/3764863.html
Copyright © 2011-2022 走看看