• toj 1721 Friends


    1721.   Friends

    Time Limit: 1.0 Seconds   Memory Limit: 65536K
     

    Total Runs: 80   Accepted Runs: 14



    You know this problem... several friends meet at the Hacienda (a rather fine restaurant) every Wednesday,have some drinks and fun in general until someone brings up the dreaded question: "So, where are we going tonight?"

    At this point basically two things can happen: Either take the Swedish solution or the Italian solution. The Swedish solution means that there is an absolutely embarrassing silence for about five minutes disturbed only once or twice by a muttered "Uh, I don't care...", then they finally agree (silently of course) to get totally drunk. The Italian solution includes (but is not limited to) lots of shouting, total mayhem in the Hacienda, and probably 'family' problems.

    But wait, yes - you are right. We are in Germany, so our friends will take the German solution, of course.That means: Voting!

    As you can imagine, the friends do not just vote for a certain place to go to depending on their current mood.It really depends much more on who is there on a given Wednesday. Here are the rules:

    1. Anne will always vote for going to the cinema.

    2. Bob will vote for going to the disco if Karin is there, too.

    3. Karin will vote for going to the disco if Charly is there, if Charly is not there but Anne is, Karin will vote for going to the cinema, if Charly and Anne are not there Karin will vote for going to the cocktail bar.

    4. Dave is one of those guys who never votes for anything.

    5. If Dave is there, Bob will vote for going to the cocktail bar.

    6. If Charly and Anne are there, both of them will vote for going to the cinema.

    7. Edward votes for going to the cocktail bar if Anne is there and Charly is not there, otherwise Edward votes for going to the cinema.

    8. If Edward is there, Bob will vote for going to the cocktail bar.

    9. Frank will vote for going to the cinema if neither Bob nor Anne are there, and Frank will vote for going to the disco if Anne is there.

    10. If Anne is not there, Bob will vote for going to the cocktail bar.

    For a given Wednesday, count the votes for each place from the friends who are there on that Wednesday.If no rule applies for a present friend or if several rules apply and require the friend to vote for different places, this friend abstains from voting on that Wednesday.

    Input

    The first line contains the number of scenarios (Wednesday meetings).

    For each scenario, there is one line containing the names of the present friends. Names are separated by single blanks and consist of letters only. The same name will not occur more than once on the same line.

    Output

    The output for every scenario begins with a line containing "Scenario #i:", where i is the number of the scenario starting at 1.

    Then for each scenario print a single line containing the place that received the most votes. Possible places are 'cinema', 'cocktail bar', and 'disco'. If none of those places receives more votes than the other two print 'stay at the Hacienda'.

    Terminate the output for the scenario with a blank line.

    Sample Input

    2
    Frank Dave
    Karin Frank
    
    Sample Output

    Scenario #1:
    cinema
    Scenario #2:
    stay at the Hacienda
    


    Source: TUD Programming Contest 2003
    Submit   List    Runs   Forum   Statistics

    #include <iostream>
    #include 
    <string>
    #include 
    <map>
    using namespace std;
    map
    <string,int>M;
    bool mark[8];
    int a,b,c;
    int main()
    {
        M[
    "Anne"]=1;
        M[
    "Bob"]=2;
        M[
    "Karin"]=3;
        M[
    "Charly"]=4;
        M[
    "Dave"]=5;
        M[
    "Edward"]=6;
        M[
    "Frank"]=7;
        
    int t,len,i,zz=1;
        cin
    >>t;
        getchar();
        
    string str,temp;
        
    while(t--)
        {
            getline(cin,str,
    '\n');
            len
    =str.length();
            str
    +=' ';
            
    int starti=0;
            
    for(i=1;i<=7;i++)
                mark[i]
    =false;
            
    for(i=0;i<=len;i++)
            {
                
    if(str[i]==' ')
                {
                    temp
    =str.substr(starti,i-starti);
                    starti
    =i+1;
                    mark[M[temp]]
    =true;
                }
            }
            a
    =0;
            b
    =0;
            c
    =0;
            
    if(mark[1])
            {
                a
    ++;
            }
            
    if(mark[2])
            {
                
    if(mark[3]&&!mark[5]&&!mark[6]&&mark[1])
                    b
    ++;
                
    else if(!mark[3]&&(mark[5]||mark[6]||!mark[1]))
                    c
    ++;
            }
            
    if(mark[3])
            {
                
    if(mark[4])
                    b
    ++;
                
    else if(!mark[4]&&mark[1])
                    a
    ++;
                
    else if(!mark[1]&&!mark[4])
                    c
    ++;
            }
            
    if(mark[4])
            {
                
    if(mark[1])
                    a
    ++;
            }
            
    if(mark[6])
            {
                
    if(mark[1]&&!mark[4])
                    c
    ++;
                
    else
                    a
    ++;
            }
            
    if(mark[7])
            {
                
    if(!mark[1]&&!mark[2])
                    a
    ++;
                
    else if(mark[1])
                    b
    ++;
            }
            printf(
    "Scenario #%d:\n",zz++);
             
    if(a>b&&a>c)
            {
                printf(
    "cinema\n");
            }
            
    else if(b>c&&b>a)
            {
                printf(
    "disco\n");     
            }
            
    else if(c>a&&c>b)
            {
                printf(
    "cocktail bar\n");
            }
            
    else
                printf(
    "stay at the Hacienda\n");
            printf(
    "\n");
        }
        
    return 0;
    }
  • 相关阅读:
    WAF绕过方法
    ”非常危险“的Linux命令
    CSRF--花式绕过Referer技巧
    安卓手机的后门控制工具SPADE
    基于RedHat发行的Apache Tomcat本地提权漏洞
    SQL注入--宽字节注入
    MySQL提权
    CF1067D. Computer Game(斜率优化+倍增+矩阵乘法)
    CF1063F. String Journey(后缀数组+线段树)
    BZOJ4732. [清华集训2016]数据交互(树链剖分+线段树+multiset)
  • 原文地址:https://www.cnblogs.com/forever4444/p/1459512.html
Copyright © 2020-2023  润新知