首页 > 其他分享 >PTA 单身狗

PTA 单身狗

时间:2023-11-07 21:15:55浏览次数:25  
标签:落单 min int couple PTA 单身 ID 客人

7-6 单身狗 作者 陈越    单位 浙江大学

“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。

输入格式:

输入第一行给出一个正整数 N(≤50000),是已知夫妻/伴侣的对数;随后 N 行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个 ID 号,为 5 位数字(从 00000 到 99999),ID 间以空格分隔;之后给出一个正整数 M(≤10000),为参加派对的总人数;随后一行给出这 M 位客人的 ID,以空格分隔。题目保证无人重婚或脚踩两条船。

输出格式:

首先第一行输出落单客人的总人数;随后第二行按 ID 递增顺序列出落单的客人。ID 间用 1 个空格分隔,行的首尾不得有多余空格。

输入样例:

3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333

输出样例:

5
10000 23333 44444 55555 88888

分析:

  输入夫妻/伴侣的对数这种一对一有绑定意思感觉的数据,用map或者建一个50000的数组才存比较合适。用数组的方法就是couple[丈夫]=妻子;couple[妻子]=丈夫。用map就是妻子作为key,丈夫作为value;反之亦然。

  怎么筛出落单的客人?从第一位客人0开始循环,再嵌套一个循环,从couple数组中找当前这位客人有没有伴侣,伴侣id是什么,同样从0开始直接一个个跟所有客人id比较,判断这位客人有没有落单。其实筛这个没什么难的,主要是要注意边界啊等等测试点。

  最后输出需要按递增输出,就写个选择排序就可以。

通过的代码:

  

#include<stdio.h>

    void sort( int a[], int n ){
    int temp,min;
    for(int i=0;i<n;i++){
        min=i;
        for(int j=i+1;j<n;j++){
            if(a[min]>a[j]){
                min=j;
            }
        }
        //交换
        temp=a[i];
        a[i]=a[min];
        a[min]=temp;
    }
}
int main(){
    int coupleN;
    int w,h;
    scanf("%d",&coupleN);
    int couple[100000]={0};
    for(int i=0;i<coupleN;i++){
        scanf("%d",&w);
        scanf("%d",&h);
        couple[w]=h;
        couple[h]=w;
    }
    int M;
    scanf("%d",&M);
    int p[100000];
    for(int i=0;i<M;i++){
        scanf("%d",&p[i]);
    }
    if(coupleN>0){
        int alone[100000];
        int count=0;
        for(int i=0;i<M;i++){
            if(couple[p[i]]>=0){
                int flag=0;
                for(int j=0;j<M;j++){
                    if(couple[p[i]]==p[j]){
                        flag=1;
                        break;
                    }
                }
                if(flag==0){
                    alone[count]=p[i];
                    count++;
                }
            }else{
                alone[count]=p[i];
                count++;
            }
        }
        sort(alone,count);
        printf("%d\n",count);
        if(count>0){
            for(int i=0;i<count;i++){
                if(i!=0){
                    printf(" ");
                }
                printf("%05d",alone[i]);
            }
            printf("\n");
        }
    }else{
        sort(p,M);
        printf("%d\n",M);
        if(M>0){
            for(int i=0;i<M;i++){
                if(i!=0){
                    printf(" ");
                }
                printf("%05d",p[i]);
            }
        }
    }
    return 0;
}

 

 

标签:落单,min,int,couple,PTA,单身,ID,客人
From: https://www.cnblogs.com/qq286442936/p/17815956.html

相关文章

  • CCF PTA认证考试模拟环境已开放!
    首页项目简介条例规定组织机构服务中心及考点联系我们登录|注册当前位置:首页 > 新闻动态CCFPTA认证考试模拟环境已开放!发布时间: 2023-11-05 访问量: 111分享:本次PTA认证的模拟考试环境现已开放,请已成功报名(报名系统的状态为审核通过)的考生按以下说明抓紧时......
  • MacOS使用PF实现iptables的端口转发功能
    目录准备web服务通过pf实现端口转发其他命令参考文章准备web服务使用Flask启动一个简单的web服务fromflaskimportFlaskapp=Flask(__name__)@app.route('/')defhello_world():return'HelloWorld!'if__name__=='__main__':app.run(port=5000)浏览器访......
  • 基于iptables防火墙堵漏
    之前在网上流传个段子:发现自己电脑被入侵,最有效的办法是即拔掉网线~虽然只是个段子,却说明一旦机器发现漏洞被入侵,阻断入侵刻不容缓,无论对个人电脑和业务服务器都是如此。商业服务器虽然有各种防护措施,但是也不能保证百分百安全,一旦被入侵处理起来可不能直接拔网线。具体处理措施......
  • iptables 使用总结
       Linux系统的防火墙功能是由内核实现的2.0版内核中,包过滤机制是ipfw,管理工具是ipfwadm2.2版内核中,包过滤机制是ipchain,管理工具是ipchains2.4版及以后的内核中,包过滤机制是netfilter,管理工具是iptablesiptables用户态位于/......
  • 双网卡 iptables 做网关 实现局域网其它机器上网
    A机器和B机器在同一个局域网,A机器的网卡eno1可以上网,IP为111.111.111.111。A机器的网卡eno2不能上网,IP为:192.168.1.66。B机器不能上网,B机器的网卡eno1IP为192.168.2.80,B机器和eno2IP为192.168.1.80。A机器的eno2和B机器的eno2在同一网段,可以通信,如何实现B机器通过A机器上网?......
  • iptables使用示例
    iptable的各种targetiptables的结构:iptables由上而下,由Tables,Chains,Rules组成。一、iptables的表tables与链chainsiptables有Filter,NAT,Mangle,Raw四种内建表:1.Filter表Filter是iptables的默认表,它有以下三种内建链(chains):INPUT链 –处理来自外部的数据。OUTPUT链 –处理......
  • docker 网络和iptable的关系
    iptable中四个表的优先级顺序如下:raw:对收到的数据包在连接跟踪前进行处理。一般用不到,可以忽略一旦用户使用了raw表,raw表处理完后,将跳过nat表和ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了mangle:用于修改报文、给报文打标签,用得也较少。nat:主要用于做......
  • iptables规则补充
    iptables规则小结1.设置默认规则为ACCEPTiptables-PINPUTACCEPTiptables-PFORWARDACCEPTiptables-POUTPUTACCEPT2.iptables-S获得完整的规范#iptables-S(snip)-ADOCKER-d172.17.0.2/32-ptcp-mtcp--dport80-jACCEPT(snip)将-A转换为-D并将......
  • [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/
     永久解决方法:在/etc/sysctl.conf中添加:net.bridge.bridge-nf-call-ip6tables=1net.bridge.bridge-nf-call-iptables=1执行sysctl-p时刷新sysctl-p如果出现缺少文件的现象sysctl:cannotstat/proc/sys/net/bridge/bridge-nf-call-iptables:没有那个文......
  • iptables 初始化(docker)
    iptables-Fiptables-Xiptables-ZiptablesFORWARD-PACCEPTiptables-tnat-Fiptables-tnat-Xiptables-tnat-Zyuminstalliptables-services serviceiptablessave......