sdnuoj1533(水题)

1533.寻找复读机
某小队里一共有 n 个人,他们的编号是 1…n,其中有一些人本质上是复读机。底层群员柳予欣发现,如果一个人的本质是复读机,那么他每次发的消息一定跟群里的上一条消息一样,特别地第一个发消息的人一定不是复读机。某不愿透露姓名的管理员现在搞到了一份聊天记录,他想请你找出所有可能是复读机的群友。
Input

多组输入。每组输入的第一行两个正整数 n,m,表示群里的人数和聊天记录的总条数。接下来 m 行按时间顺序给出聊天记录,每行有一个正整数 x 和一个小写字母字符串 S,表示群友 x 发了消息 S。1≤ n≤ 10001≤ m≤ 10001≤ |S|≤ 100

Output

输出一行,将所有可能是复读机的群友的编号按照从小到大排序后输出,每两个编号之间隔一个空格。
Sample Input

3 5
1 gugugu
2 gugugu
1 gugu
3 tingzhifudu
2 tingzhifudu

Sample Output

2

一开始这样写的a[1005]={1},结果是出不来结果,基础不扎实,不知道这样写只有第一个赋为了1.。。。。

#include <bits/stdc++.h>
using namespace std;
int main()
{
   
    int n,m,a[10005],b,i;
    string s,c;
    while(scanf("%d%d",&n,&m)!=EOF&&n+m!=0)
    {
   
        memset(a,0,sizeof(a));
        for(i=0;i<m;i++)
        {
   
            scanf("%d",&b);
            cin>>s;
            if(i==0)
            {
   
                c=s;
                a[b]=1;
            }
            else
            {
   
                if(s!=c)
                {
   
                    a[b]=1;
                    c=s;
                }
            }
        }
        int f=0;
        for(i=1;i<=n;i++)
        {
   
            if(!a[i])
            {
   
                if(f)
                    cout<<" ";
                f=1;
                cout<<i;
            }
        }
        cout<<'\n';
    }
    return 0;
}

当然可以用map

#include <cstdio>
#include <iostream>
#include <cstring>
#include <map>
using namespace std;
int main()
{
   
    map<int,int>mp;
    string s[1005];
    int a[1005],n,f,m,i,j;
    while(scanf("%d%d",&n,&m)!=EOF&&n+m!=0)
    {
   
        for(i=1;i<=m;i++)
        {
   
            scanf("%d",&a[i]);
            cin>>s[i];
        }
        for(i=1;i<=n;i++)
            mp[i]=1;
        mp[a[1]]=0;
        for(i=2;i<=m;i++)
        {
   
            if(s[i]!=s[i-1])
                mp[a[i]]=0;
        }
        f=0;
        for(i=1;i<=n;i++)
        {
   
            if(!mp[i])
                continue;
            if(f)
                cout<<" ";
            f=1;
            cout<<i;
        }
        cout<<'\n';
    }
    return 0;
}

全部评论

相关推荐

机智的大学生这就开摆:有些地方描述有点儿空泛。传感器直接说清是哪款,要不然对方都不知道问啥。然后freertos那里的描述也是,加上freertos就实现了实时性吗?可以说基于freertos的调度,结合xxx优化/xxx技术实现了xxx检测的实时性。同时freertos也能实现异步io,也能实现灵活的并行架构和高并发。 检测时效性的问题要考虑哪里需要时效性,摔倒检测需要通过中断实现,至于温度这种大惯量就不需要,方案细节理清楚。然后freertos那里提升响应速度用的消息队列不是太合适,可以说是用的notify反正和消息队列差不多,或者说指针传参来优化消息队列的值传递进而提升线程间通信效率。 但凡是搞过开发的看一眼你的简历就知道有问题了,需要重新整理技术路线优化一下。首先搞清楚技术路线,描述好软硬框架,体现性能优化/低功耗等。例如后续针对xxx功能进行了xxx的优化,实现了xxx成果(这里可以展开描述你使用的工具链,你是用的串口调试助手还是RTT来打印日志,有没有用systemview来优化任务的优先级大小避免乱序调度,或者使用了Ozone调试定位问题等)。 描述问题上例如视觉项目那里,基于xxx通信接口编写xxx传感器的驱动,实现了xxx功能,并提供了xxx数据处理/稳定性/精确度/异步调用。或者也可以统一描述为基于xxx、xxx、xxx通讯协议编写xxx、xxx、xxx传感器的驱动。后续再单独给这些传感器的数据处理/优化等进行描述。 最重要的一点,实习栏太少了,五六个月不至于只干了这么点,把实习项目描述清楚,把自己会的不管有没有让你做都写进去。你写了实习这栏,内容就不能比剩下的两个项目差多少了。 最后就是看看岗位jd,跟着描述修改你的专业技能以及项目的描述,这样被回复的概率才大。 希望你早日找到理想工作!祝好
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务