• G. I love Codeforces


    G. I love Codeforces

    题目大意:给你n个字符串,以及m个喜欢关系,如果u喜欢v,这时候u会把它的用户名改为 I_love_ 加上v当时的用户名

    Examples
    input
    5
    anonymous
    natalia
    LeBron
    Tanya_Romanova
    MikeMirzayanov
    6
    1 2
    3 4
    2 1
    4 3
    1 4
    3 2
    output
    Copy
    I_love_I_love_I_love_Tanya_Romanova

    思路:

    SB模拟题,纯模拟会出MLE,RE,TLE等锅,只需要记录每个点喜欢(I_love_)的个数,以及每个点对应的最后一个点。

    需要注意一下:如果要使用printf输出字符串,需按如下方式输出:

    string S;
    printf("%s",S.c_str());

    输入带有空格的字符串

    #include<string>
    string
    str; getline(cin,str);

    接收一个字符串,可以接收空格并输出

    #include <iostream>
    using namespace std;
    int main () {
        char m[20];
        cin.getline(m,5);
        cout<<m<<endl;
    }

    注意事项:

    1、cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

    2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过

    str=" ";
    getline(cin,str);

    的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。

    参考博文:https://www.cnblogs.com/AndyJee/archive/2014/07/02/3821067.html

    MrBlue_and_MrGreen

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    
    using namespace std;
    
    int n,m,p[200005],sum[200005];
    string s[200005],S="I_love_";
    
    void add(int u,int v){
        p[u]=p[v];sum[u]=sum[v]+1;
    }
    
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++) cin>>s[i];
        scanf("%d",&m);
        for(int i=1;i<=n;i++) p[i]=i;
        for(int i=1;i<=m;i++){
            int a,b;
            scanf("%d%d",&a,&b);
            add(a,b);
        }
        for(int i=1;i<=sum[1];i++) printf("%s",S.c_str());
        printf("%s",s[p[1]].c_str());
        return 0;
    }
  • 相关阅读:
    hadoop_05
    分布式集群时间同步
    crontab定时任务
    操作系统笔记五:输入输出系统
    操作系统笔记四:文件管理与磁盘存储器管理
    操作系统笔记三:存储器管理
    操作系统笔记二:进程与调度(2)
    操作系统笔记二:进程与调度(1)
    可能的加分项
    对老师的建议
  • 原文地址:https://www.cnblogs.com/song-/p/9555513.html
Copyright © 2020-2023  润新知