码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [题解] 多国语言(2021牛客OI赛前集训营)


    题目描述

    不同的国家和地区,使用着不同的语言。
    在不同的语言中,形容猫的叫声的拟声词也有所不同,比如中文中是“喵 (miao)”,
    英文中是“meow”,日文中是“にゃー(nyaa)”。

    牛牛想知道,不同国家和地区的猫,是不是真的存在不同的交流方式。
    为了验证这个事情,他将m种语言编号为1,2, . . . , m。然后他随机的找来了一只猫,
    并对着猫发出 n 次猫叫声,其中第i 次猫叫声是第 ai (1 ≤ ai ≤ m)种语言中猫叫
    的拟声词。
    每次发出猫叫声后,他会记录猫是否对其回应。如果猫在第i次回应了牛牛,牛牛
    则记录bi = 1,否则记录bi = 0。

    如果猫只对某种语言的叫声做出回应,并对该种语言的每次叫声都做出回应,那
    么牛牛就判断,不同国家和地区的猫确实存在不同的交流方式,并且认为这只猫
    来自该种语言的国家。此时输出该种语言的编号。
    否则,如果猫对≥ 2种语言的叫声做出了回应,或者对1种语言做出过回应,但没
    有对每次该语言的叫声做出回应,那么牛牛认为猫真可爱,并且给它一条小鱼干。
    此时输出^v^。
    当然也有可能,猫根本就不回应牛牛的任意一次叫声,这时牛牛将会很沮丧。此
    时输出 >-<。

    思路

    记录叫的次数和分别回应的次数, cnt 统计几次叫满(都回应了),k 统计几次至少回应了一次,对比即可。

    Code

    讲解都在注释里:

    #include
    #include
    #include
    #include
    #include
    using namespace std;
    const int N=1e5+5;
    int n,m,T,cnt,a[N],b[N],v[N],num[N];
    int main(){
        scanf("%d",&T);
        while(T--){
            memset(num,0,sizeof(num));
            memset(v,0,sizeof(v));
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;++i){
                scanf("%d",&a[i]);
                ++num[a[i]];//num[a[i]]:该语言牛牛叫了多少次
            }
            for(int i=1;i<=n;++i){
                scanf("%d",&b[i]);
                if(b[i]==1) ++v[a[i]];//v[a[i]]:被回应的次数
            }
            int dire=0,k=0,cnt=0;
            for(int i=1;i<=m;++i)
                if(v[i]>0&&num[i]>0){
                    ++k;//该种语言至少被回应了一次
                    if(num[i]==v[i]) ++cnt,dire=i;//对该种语言每次都做出了回应
                }
            if(k>=2) printf("^v^\n");//猫对≥2种语言的叫声做出了回应
            else if(k==0) printf(">-<\n");//猫根本就不回应牛牛的任意一次叫声
            else {//对1种语言做出过回应
                if(cnt>0) printf("%d\n",dire);//对该种语言的每次叫声都做出回应
                else printf("^v^\n");//没有对每次该语言的叫声做出回应
            }
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    再来一个没有注释的版本:

    #include
    #include
    #include
    #include
    #include
    using namespace std;
    const int N=1e5+5;
    int n,m,T,cnt,a[N],b[N],v[N],num[N];
    int main(){
        scanf("%d",&T);
        while(T--){
            memset(num,0,sizeof(num));
            memset(v,0,sizeof(v));
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;++i){
                scanf("%d",&a[i]);
                ++num[a[i]];
            }
            for(int i=1;i<=n;++i){
                scanf("%d",&b[i]);
                if(b[i]==1) ++v[a[i]];
            }
            int dire=0,k=0,cnt=0;
            for(int i=1;i<=m;++i)
                if(v[i]>0&&num[i]>0){
                    ++k;
                    if(num[i]==v[i]) ++cnt,dire=i;
                }
            if(k>=2) printf("^v^\n");
            else if(k==0) printf(">-<\n");
            else {
                if(cnt>0) printf("%d\n",dire);
                else printf("^v^\n");
            }
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    AD

    Lvshu   OJ   ,大量高质量题目等着你,点击这里马上注册。 {\color{green}\large{\texttt{Lvshu OJ }}\color{blue}\text{,大量高质量题目等着你,点击这里马上注册。}} Lvshu OJ ,大量高质量题目等着你,点击这里马上注册。

    Lvshu   OS ,崭新的系统,点击这里,马上查看详情 {\color{blue}\large{\texttt{Lvshu OS}}\color{green}\text{,崭新的系统,点击这里,马上查看详情}} Lvshu OS,崭新的系统,点击这里,马上查看详情

  • 相关阅读:
    java计算机毕业设计云端小区物业智能管理系统MyBatis+系统+LW文档+源码+调试部署
    数据通信原理期末总复习
    c 语言基础题目:PTA L1-030 一帮一
    即时通讯开发中WebSocket和SSE技术如何实现Web端消息推送
    微信小程序|使用小程序制作一个核酸检测点查询工具
    面试题: Spring中Bean的实例化和Bean的初始化有什么区别?
    NGINX源码之:listen和server_name命令与listening监听创建
    github.com/holiman/uint256 源码阅读
    Linux工具 - 好用的yum包管理器
    SpringBoot+Vue实现前后端分离的二手交易平台
  • 原文地址:https://blog.csdn.net/hello_wangping/article/details/127461028
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号