zoukankan      html  css  js  c++  java
  • ZOJ 3961 Let's Chat 【水】

    题目链接

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3961

    题意
    给出两个人的发消息的记录,然后 如果有两人在连续M天及以上 互发消息,超过几天 加几点 友谊值 最后求 友谊值

    思路

    先把第一个 连续区间 >= M 的 存下来 然后第二次 输入的时候 去判断。

    AC代码

    #include <cstdio>
    #include <cstring>
    #include <ctype.h>
    #include <cstdlib>
    #include <iostream>
    #include <algorithm>
    #include <cmath>
    #include <deque>
    #include <vector>
    #include <queue>
    #include <string>
    #include <map>
    #include <stack>
    #include <set>
    #include <numeric>
    #include <sstream>
    
    using namespace std;
    typedef long long LL;
    
    const double PI = 3.14159265358979323846264338327;
    const double E = 2.718281828459;
    const double eps = 1e-6;
    
    const int MAXN = 0x3f3f3f3f;
    const int MINN = 0xc0c0c0c0;
    const int maxn = 1e5 + 5;
    const int MOD = 1e9 + 7;
    
    int main()
    {
        int t;
        scanf("%d", &t);
        while (t--)
        {
            int n, q;
            int i, j;
            scanf("%d%d", &n, &q);
            map <string, string> M;
            M.clear();
            string s, temp = "";
            for (i = 0; i < q; i++)
                temp += "0";
            int m;
            scanf("%d", &m);
            for (i = 0; i < m; i++)
            {
                cin >> s;
                M[s] = temp;
            }
            for (i = 0; i < q; i++)
            {
                scanf("%d", &m);
                for (j = 0; j < m; j++)
                {
                    cin >> s;
                    M[s][i] = '1';
                }
            }
    //      map <string, string>::iterator it;
    //      for (it = M.begin(); it != M.end(); it++)
    //          cout << it -> first << " " << it -> second << endl;
            string ans;
            int num;
            for (i = 0; i < n; i++)
            {
                temp.clear();
                for (j = 0; j < q; j++)
                {
                    scanf(" %d", &num);
                    temp += num + '0';
                }   
                int flag = 0;
                ans.clear();
                map <string, string>:: iterator it;
                for (it = M.begin(); it != M.end(); it++)
                {
                    if (it -> second == temp )
                    {
                        if (flag == 1)
                        {
                            flag = 0;
                            break;
                        }
                        else
                        {
                            flag = 1;
                            ans = it -> first;
                        }                                       
                    }   
                }
                if (flag)
                    cout << ans << endl;
                else
                    printf("Let's go to the library!!
    ");
            }
        }
    }
  • 相关阅读:
    Binary Tree Maximum Path Sum
    ZigZag Conversion
    Longest Common Prefix
    Reverse Linked List II
    Populating Next Right Pointers in Each Node
    Populating Next Right Pointers in Each Node II
    Rotate List
    Path Sum II
    [Leetcode]-- Gray Code
    Subsets II
  • 原文地址:https://www.cnblogs.com/Dup4/p/9433270.html
Copyright © 2011-2022 走看看