1139 First Contact(unique函数,string.substr()函数)

2023-10-27

PTA | 程序设计类实验辅助教学平台

用map套个set来实现邻接表(排序都免了)

#include<bits/stdc++.h>
using namespace std;
int n,m,k;
string a,b;
map<string,set<string>>mp;
int main()
{
    cin.tie(0);
    cin >> n >> m;
    for(int i = 0; i < m; i ++)
    {
        cin >> a >> b;
        mp[a].insert(b),mp[b].insert(a);
    }
    cin >> k;
    while(k --)
    {
        cin >> a >> b;
        vector<pair<int,int>>ans;
        for(auto c : mp[a])
        {
            if(c.size() != a.size() || c == b) continue;//不是同性或者朋友b
            for(auto d : mp[b])
            {
                if(d.size() !=  b.size() || d == a) continue;//不是同性或者朋友a
                if(mp[c].count(d)) ans.push_back({abs(stoi(c)),abs(stoi(d))});
            }
        }
        sort(ans.begin(),ans.end());

        printf("%d\n",ans.size());
        for(auto it : ans) printf("%04d %04d\n",it.first,it.second);
    }

    return 0;
}

常规做法: 

#include<bits/stdc++.h>
using namespace std;
const int N=310;
int n,m;
unordered_map<string,int>mp;
string num[N];
int id;
bool g[N][N];
vector<int>boys,girls;
int main()
{
    scanf("%d %d",&n,&m);
    while(m--)
    {
        string a,b,x,y;
        cin>>a>>b;
        x=a,y=b;
        if(x[0]=='-')x=x.substr(1);
        if(y[0]=='-')y=y.substr(1);
        if(mp.count(x)==0)mp[x]=++id,num[id]=x;
        if(mp.count(y)==0)mp[y]=++id,num[id]=y;
        int px=mp[x],py=mp[y];
        g[px][py]=g[py][px]=true;
        if(a[0]=='-')girls.push_back(px);
        else
            boys.push_back(px);
        if(b[0]=='-')girls.push_back(py);
        else
            boys.push_back(py);
    }
    sort(boys.begin(),boys.end());
    boys.erase(unique(boys.begin(),boys.end()),boys.end());
    sort(girls.begin(),girls.end());
    girls.erase(unique(girls.begin(),girls.end()),girls.end());
    int k;
    scanf("%d",&k);
    while(k--)
    {
        vector<pair<string,string>>res;
        string x,y;
        cin>>x>>y;
        vector<int>p=boys,q=boys;
        if(x[0]=='-')p=girls,x=x.substr(1);
        if(y[0]=='-')q=girls,y=y.substr(1);
        int a=mp[x],b=mp[y];
        for(int c:p)
        {
            for(int d:q)
            {
                if (c != a && c != b && d != a && d != b && g[a][c] && g[c][d] && g[d][b])
                res.push_back({num[c],num[d]});
            }
        }
        sort(res.begin(),res.end());
        printf("%d\n",res.size());
        for(auto p:res)
            cout<<p.first<<" "<<p.second<<endl;
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1139 First Contact(unique函数,string.substr()函数) 的相关文章

随机推荐

  • qq文件对方接收后一定会有提示吗_QQ或将推出已读功能,以后假装看不见就要出事啊!大家怎么看?...

    大家都知道在平时我们经常会主动屏蔽或者无视一些消息 尤其是在工作的时候 面对超出自己的工作范畴我们会假装无视 但是近来QQ欲将推出已读功能 QQ的理由是 一旦消息被接受 按照人际交往的规则 是需要反馈的 不反馈是让对方很不舒服的 接着这个消
  • RMS,RMSE,标准差

    几个容易混淆的量 分别为 RMS 均方根值 Mean squared error RMSE 均方根误差 Root mean squared error Standard Deviation 标准差 下面给出三个量的表达公式 均方根值 均方根
  • JS中字符串比较大小判断的问题(转数字比较)

    因为最近你在写JS页面 有时候需要写到验证 就遇到比较的问题 JS验证代码如下 页面效果 前面开始的时间段3 9 21 23会出现验证 10 20不会 问题原因 得到的结果是字符串 不能直接对比大小 字符串对比的话直接比得是第一位的数字 解
  • HDFS操作及命令介绍

    HDFS常用命令
  • 2021年11月世界编程语言排行

    2021年11月世界编程语言排行 11 月头条 PHP 即将失去前 10 名的位置 自 TIOBE 指数启动以来 20 多年前 PHP 一直是排名前 10 的永久玩家 最近 我们看到 PHP 努力保持在前 10 名 PHP 曾经是 Web
  • 腾讯云轻量服务器安装宝塔镜像使用入门教程(初体验)

    腾讯云轻量应用服务器30M峰值带宽24元 月 价格很不错新手站长网选择了一台入门级1核1G的轻量应用服务器lighthouse 镜像安装宝塔Linux面板 新手站长网来详细说下腾讯云香港轻量应用服务器从购买选择到建站入门教程 腾讯云香港轻量
  • JS各种校验规则

    目录 1 校验是否为整数 2 验证开始时间是否大于结束时间 3 校验手机号是否正确 4 校验身份证是否合法 5 校验字符串是否为正整数 6 去除两端空白判断是否为空 7 校验邮箱是否合理 1 校验是否为整数 var flowNum flow
  • 微信支付服务器端代码,APP接入微信支付(后台代码)

    配置参数 private config array appid gt 微信开放平台上的应用id mch id gt 微信申请成功之后邮件中的商户id api key gt 在微信商户平台上自己设定的api密钥 32位 notify url
  • 祖传Python代码,初学者必用,含泪发出

    今天分享几段工作生活中常用的代码 都是最为基础的功能和操作 而且大多还都是出现频率比较高的 很多都是可以拿来直接 使用或者简单修改就可以放到自己的项目当中 日期生成 很多时候我们需要批量生成日期 方法有很多 这里分享两段代码 Python学
  • 华为HJ2 计算某字符出现次数

    a input b input num 0 for i in range len a if b lower a i lower num num 1 print num
  • CUDA基本优化方法

    一 基于编程模型和执行模型的优化方法 1 选取合适的gridDim和blockDim blockDim最好为32的整数倍 因为执行指令的基本单位为线程束 线程束内的所有线程统一执行广播下来的命令 而线程束的线程数量基本为32 当block被
  • xx排排网数据加密(js逆向)

    网址 aHR0cHM6Ly9kYy5zaW11d2FuZy5jb20v 点翻页看抓包信息 这个data就是加密后的数据 这里的key是一段代码 这是解密所需的key 先拿出来格式化看看 这个和加速乐的处理方法是一样的 把evel换成cons
  • 【Pygame经典合集】​​​​​​终极白给大招:让你玩儿到爽(附多款游戏源码)

    导语 嘿 我是木木子 关注我 跟我一起玩游戏啦 其实嘛 最近的话游戏的话实在是没什么可以写的了 很多游戏的话太难仿制起来很费时间 于是 就有了今天这篇小合集 哈哈哈 这是一个pygame的项目 内含4款单个游戏的哦 想玩那款玩儿那款的哈 今
  • RS485通讯接口定义图详解

    RS485采用差分信号负逻辑 2V 6V表示 0 6V 2V表示 1 RS485有两线制和四线制两种接线 四线制只能实现点对点的通信方式 现很少采用 现在多采用的是两线制接线方式 这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结
  • docked --debug 功能

    docker不正常时使用查看 太好用了 bip Bridge IP 是Docker的配置选项之一 用于指定Docker守护进程创建的网络桥接接口的IP地址和子网掩码 在设置bip时 确保所指定的IP地址不以0结尾 当使用以0结尾的IP地址作
  • 移动app自动化测试工具发展历程--完整版

    最近在总结关于移动app的自动化测试的系列文章 本来想在7月份推出这个系列 但是又担心7月份的天气太热 开空调费油 所以索性 想到哪就整理到哪 持续的推出来吧 今天先把移动app自动化测试工具总结一下 我大概的搜索了一下 本站的大佬 整理的
  • (C语言)矩阵转置 (10分)

    将一个3 3矩阵转置 即行和列互换 输入格式 在一行中输入9个小于100的整数 其间各以一个空格间隔 输出格式 输出3行3列的二维数组 每个数据输出占4列 输入样例 1 2 3 4 5 6 7 8 9 输出样例 1 4 7 2 5 8 3
  • 自己造一个简易的IOC轮子

    简易的IOC流程编写笔记 首先先对这个小demo做一个说明 首先这个demo是很简易的 里面有一些可以优化的复杂点我设置了TODO 如果你有兴趣的话 可以自己去完善一下 写这个demo就是为了让自己对IOC的一个流程更加熟悉 对于刚开始学习
  • 【ROS工具】ROS基础学习

    ROS基础学习 1 基本介绍 2 实际操作 1 基本介绍 ROS Robot Operating System 是一个机器人操作系统 开始于2007 三个中长期支持版本 对应着Ubuntu的三个LTS版本如下 ROS术语 主节点 ros m
  • 1139 First Contact(unique函数,string.substr()函数)

    PTA 程序设计类实验辅助教学平台 用map套个set来实现邻接表 排序都免了 include