90行,调了俩小时,大约有以下坑点。

1.每个数字都可能正负出现,比如-0 0,-1 1,一开始以为一个数的正负只会出现一个。

2.当俩人都不出现在照片中,那么输出俩人就行

3.当其中一个人不在照片里的时候,那个不在照片里的人不用输出,一开始以为既然是情侣,所以不在照片里的那个那么肯定和自己的对象最亲密,是我想多了。

对,大概就这些了

#include <bits/stdc++.h>

using namespace std;

constexpr double eps = 1e-8;

int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n, m;
cin >> n >> m;
vector<vector<string>> p;
for (int i = 0; i < m; i++) {
int k;
cin >> k;
vector<string> v(k);
for (int j = 0; j < k; j++) {
string s; cin >> s;
if (s[0] != '-') s = "+" + s;
v[j] = s;
}
p.push_back(v);
} string a, b;
cin >> a >> b;
if (a[0] != '-') a = "+" + a;
if (b[0] != '-') b = "+" + b;
map<pair<string, string>, double> intimacy; set<string> S[2];
for (int i = 0; i < m; i++) {
bool havea = false, haveb = false;
if (find(p[i].begin(), p[i].end(), a) != p[i].end()) havea = true;
if (find(p[i].begin(), p[i].end(), b) != p[i].end()) haveb = true;
int K = (int)p[i].size();
for (int j = 0; j < p[i].size(); j++) {
if (havea && p[i][j] != a && p[i][j][0] != a[0]) intimacy[{a, p[i][j]}] += 1.0 / K, S[0].insert(p[i][j]);
if (haveb && p[i][j] != b && p[i][j][0] != b[0]) intimacy[{b, p[i][j]}] += 1.0 / K, S[1].insert(p[i][j]);
}
}
vector<string> v[2];
for (int i = 0; i < 2; i++) {
for (auto x : S[i]) {
v[i].push_back(x);
}
}
sort(v[0].begin(), v[0].end(), [&](string x, string y) {
if (fabs(intimacy[{a, x}] - intimacy[{a, y}]) < eps) return abs(stoi(x)) < abs(stoi(y));
return intimacy[{a, x}] > intimacy[{a, y}];
});
sort(v[1].begin(), v[1].end(), [&](string x, string y) {
if (fabs(intimacy[{b, x}] - intimacy[{b, y}]) < eps) return abs(stoi(x)) < abs(stoi(y));
return intimacy[{b, x}] > intimacy[{b, y}];
});
double mxv0 = 0.0;
if (!v[0].empty()) mxv0 = intimacy[{a, v[0][0]}];
double mxv1 = 0.0;
if (!v[1].empty()) mxv1 = intimacy[{b, v[1][0]}];
//double mx = max(mxv0, mxv1);
double mx = max(mxv1, mxv0); function<void(string, string)> print = [&] (string a, string b) {
if (a[0] == '+') cout << stoi(a) << " ";
else cout << a << " "; if (b[0] == '+') cout << stoi(b) << "\n";
else cout << b << "\n";
}; if (fabs(intimacy[{a, b}] - mxv0) < eps && fabs(intimacy[{b, a}] - mxv1) < eps) print(a, b);
else {
for (int i = 0; i < v[0].size(); i++) {
if (fabs(intimacy[{a, v[0][i]}] - mxv0) < eps) {
print(a, v[0][i]);
//cout << a << " " << v[0][i] << "\n";
}
}
for (int i = 0; i < v[1].size(); i++) {
if (fabs(intimacy[{b, v[1][i]}] - mxv1) < eps) {
print(b, v[1][i]);
//cout << b << " " << v[1][i] << "\n";
}
}
} return 0;
}

L2-028 秀恩爱分得快的更多相关文章

  1. L2-028 秀恩爱分得快(模拟)

    古人云:秀恩爱,分得快. 互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度.如果一张照片上出现了 K 个人,这些人两两间的亲密度就被定义为 1/K.任意两个人如果同 ...

  2. 【PTA 天梯赛】L2-028 秀恩爱分得快(模拟)

    古人云:秀恩爱,分得快. 互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度.如果一张照片上出现了 K 个人,这些人两两间的亲密度就被定义为 1/K.任意两个人如果同 ...

  3. PAT L2-028 秀恩爱分得快

    https://pintia.cn/problem-sets/994805046380707840/problems/994805054698012672 古人云:秀恩爱,分得快. 互联网上每天都有大 ...

  4. L2-028 秀恩爱分得快(25 分)

    古人云:秀恩爱,分得快. 互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度.如果一张照片上出现了 K 个人,这些人两两间的亲密度就被定义为 1/K.任意两个人如果同 ...

  5. pta l2-28(秀恩爱分得快)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805054698012672 题意:给n个人,m张照片,在同一张 ...

  6. 团体程序设计天梯赛 L2-028. 秀恩爱分得快

    1.输入-0(第一部分.第二部分),输出-02.只统计与两个人的亲密程度,否则超时 Data: 4 14 -0 1 -2 3-0 1 -0 1 ------ 4 1 3 1 -2 3-0 1 -0 1 ...

  7. PAT 天梯赛 L2-028. 秀恩爱分得快 【数据处理】

    题目链接 https://www.patest.cn/contests/gplt/L2-028 思路 0.只处理被询问的情侣的亲密度,否则会超时 1.要注意输入数字要用字符串,还要标记性别 因为 输出 ...

  8. 520是秀恩爱吃狗粮,521才是真正的告白日,- Python告白神器用起来 !

    网络情人节是信息时代的爱情节日,定于每年的5月20日和5月21日,该节日源于歌手范晓萱的<数字恋爱>中“520”被喻成“我爱你” ,以及音乐人吴玉龙的网络歌曲中“我爱你”与“网络情人”的紧 ...

  9. 汕头市队赛 SRM 06 C 秀恩爱

    C 秀恩爱 SRM 06 背景&&描述         KPM坐在直升机上俯瞰小渔村景象.         渔村可看作二维平面,密密麻麻地到处都是单身狗,KPM当前所在坐标为(sx,s ...

  10. 喜欢的女生快被别人抢走了,我敢怎么抢? - V2EX

    喜欢的女生快被别人抢走了,我敢怎么抢? - V2EX 三大定律镇楼: 第一定律:永远不要以为女生对你有好感.第二定律:告白等于见光死.第三定律:秀恩爱分得快.

随机推荐

  1. Java并发(十三)----共享存在的问题

    1.小故事 老王(操作系统)有一个功能强大的算盘(CPU),现在想把它租出去,赚一点外快 小南.小女(不同的线程)来使用这个算盘来进行一些计算,并按照时间给老王支付费用 但小南不能一天24小时使用算盘 ...

  2. 【游记】NOIP2022 预备赛游记

    Day -2 \(NOIP\) 就要来了,\(CSYZ\) 斥巨资给我们在 \(NOIP\) 正式考点举办了一场 \(NOIP\) 预备赛,真是太感动了~~ \(cy\) 说明天要颁奖,激动激动! D ...

  3. pycharm链接mysql报错: Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.

    检查驱动 我本机安装的mysql版本是5.6的,那么IDEA要连接mysql也应该匹配下驱动版本.把Driver改成MySQL for 5.1就可以了. 参考链接:https://blog.csdn. ...

  4. Redis从入门到放弃(8):哨兵模式

    在前面的文章中介绍了Redis的主从复制,但主从复制存在一定的缺陷.如果Master节点宕机,因为不具备自动恢复功能,需要人工干预,那么在这个干预过程中Redis将不可用. 为了解决这一问题,Redi ...

  5. win10右键添加打开cmd窗口的命令

    创建文本文档,复制如下内容: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\b ...

  6. 《Kali渗透基础》01. 介绍

    @ 目录 1:渗透测试 1.1:安全问题的根源 1.2:安全目标 1.3:渗透测试 1.4:标准 2:Kali 2.1:介绍 2.2:策略 2.3:安装 3:Kali 初步设置 3.1:远程连接 3. ...

  7. The Missing Semester - 第五讲 学习笔记(二)

    第五讲(二) SSH入门 介绍完命令行环境后,这半节主要介绍的是ssh的有关入门知识.SSH是Secure Shell的简称. 课程视频地址:https://www.bilibili.com/vide ...

  8. 开源XL-LightHouse与Flink、ClickHouse之类技术相比有什么优势

    Flink是一款非常优秀的流式计算框架,而ClickHouse是一款非常优秀的OLAP类引擎,它们是各自所处领域的佼佼者,这一点是毋庸置疑的.Flink除了各种流式计算场景外也必然可以用于流式统计,C ...

  9. VOLTE:MIUI14无5G信号、通话质量差、短信收不到的原因之一

    在最近一次miui版本更新后的一段时间里,先后出现以下一些情况: 1. 在"双卡与移动网络"设置中,无论如何折腾"5G网络"开关或者"5G网络模式选择 ...

  10. apollo多环境部署

    一.环境准备 jdk : 1.8+         mysql  5.6.5+ 二.安装包下载 https://github.com/ctripcorp/apollo/releases 下载如下三个压 ...