首页 > 其他分享 >L2-044 大众情人

L2-044 大众情人

时间:2024-03-28 12:46:45浏览次数:14  
标签:distance male int ans2 L2 female 大众情人 044 dis

测试点4一开始没过去,以为是数据范围的问题。
找半天才发现是floyd三层循环k那个写反了,害。

#include <bits/stdc++.h>
using namespace std;
vector<int> male,female;
int dis[510][510];
int main() {
	memset(dis, 0x3f, sizeof(dis));
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		char sex;
		int cnt, person, distance;
		cin >> sex;
		cin >> cnt;
		if (sex == 'F') female.push_back(i);
		else male.push_back(i);
		while (cnt--) {
			cin >> person;
			cin.get();
			cin >> distance;
			dis[i][person] = distance;
		}
	}
	for (int k = 1; k <= n; k++) {//支点
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) {
				dis[i][j] = min(dis[i][k] + dis[k][j], dis[i][j]);
			}
		}
	}
	set<int> ans1, ans2;
	int dis1 = INT_MAX,dis2=INT_MAX;
	//女生的大众情人
	for (int i = 0; i < male.size(); i++) {
		int man = male[i];
		int distance = 0;
		for (int j = 0; j < female.size(); j++) {//所有的女生对man的距离感
			if (dis[female[j]][man] > distance) {
				distance = dis[female[j]][man];
			}
		}
		//distance是这个和这个男生关系最远的女生的距离
		if (distance < dis1) {
			dis1 = distance;
			ans1.clear();
			ans1.insert(man);
		}
		else if (distance == dis1) {
			ans1.insert(man);
		}
	}
	//男生的大众情人
	for (int i = 0; i < female.size(); i++) {
		int woman = female[i];
		int distance = 0;
		for (int j = 0; j < male.size(); j++) {
			if (dis[male[j]][woman] > distance) {
				distance = dis[male[j]][woman];
			}
		}
		if (distance < dis2) {
			dis2 = distance;
			ans2.clear();
			ans2.insert(woman);
		}
		else if (distance == dis2) {
			ans2.insert(woman);
		}
	}
	set<int>::iterator it;
	for (it = ans2.begin(); it != ans2.end();) {
		cout << *it;
		if (++it != ans2.end()) {
			cout << " ";
		}
	}
	cout << '\n';
	for (it = ans1.begin(); it != ans1.end();) {
		cout << *it;
		if (++it != ans1.end()) {
			cout << " ";
		}
	}
	return 0;
}

标签:distance,male,int,ans2,L2,female,大众情人,044,dis
From: https://www.cnblogs.com/chengyiyuki/p/18101362

相关文章

  • 逻辑链路控制与适配协议(L2CAP)
    逻辑链路控制与适配协议通常简称为L2CAP(LogicalLinkControlandAdaptationProtocol),它向上连接应用层,向下连接控制器层,发挥主机与控制器之间的适配器的作用,使上层应用操作无需关心控制器的数据处理细节。经典蓝牙的L2CAP层比较复杂,它实现了协议复用、数据分段与重组、封装......
  • L2-043 龙龙送外卖
    考察的是贪心+记忆化搜索。最短路=走过的路径*2-从根到小区最深路径长度#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1e5+10;intp[maxn],dis[maxn],dp[maxn];intmaxdepth=0,sumpath=0;intdfs(ints){//记忆化搜索 if(p[s]==-1)return0......
  • 团体程序设计天梯赛 L2-029 特立独行的幸福
    L2-029特立独行的幸福分数25对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到1,就称该数为幸福数。1是一个幸福数。此外,例如19经过1次迭代得到82,2次迭代后得到68,3次迭代后得到100,最后得到1。则19就是幸福数。显然,在......
  • L2-028 秀恩爱分得快
    可恶的模拟,借鉴了别人的思路,这样写很清晰#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;constintN=1e5+10;constintinf=0x3f3f3f3f;constintmod=1e9+7;intn,q,m;vector<int>a,b;doubleg[1010][1010];doublemaxn[1010];set<......
  • PTA L2-033 简单计算器 手写栈
    本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1​ 存放数字,另一个堆栈 S2​ 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:从 S1​ 中弹出两个数字,顺序为 n1​ 和......
  • V4L2 ioctl调用流程分析
    学习资料:韦东山第三期 可参考:https://www.cnblogs.com/lethe1203/p/18097351video_device->.fops->v4l2_file_operations->.ioctl_ops->v4l2_ioctl_opsv4l2_ioctl_ops可分为两类:INFO_FL_STD:标准的,无需特殊的代码来处理,APP的调用可以直达这些处理函数I......
  • V4L2驱动程序整体框架
    学习资料:韦东山第三期 应用程序调用open/read/write会调用到v4l2_fops的相应函数:接口层再调用到硬件相关的代码,根据打开的文件得到一个video_device(根据此设备号),调用这个video_device里面的vdev->fops->open函数可以看到read和ioctl也是类似的: 应用程序进入到驱动之......
  • V4L2应用程序开发(2)
    参考资料:韦东山第三期  V4L2获取数据的操作流程如下:打开设备ioctlVIDIOC_QUERYCAP:QueryCapbility,查询能力枚举格式、设置格式ioctlVIDIOC_REQBUFS:申请bufferioctlVIDIOC_QUERYBUF和mmap:查询buffer信息、映射ioctlVIDIOC_QBUF:把buffer放入"空闲链表"ioctlVIDIO......
  • Linux V4l2简单使用
    V4L2:VideoforLinuxtwo,缩写Video4Linux2,是Linux内核中的一个框架,提供了一套用于视频设备驱动程序开发的API。它是一个开放的、通用的、模块化的视频设备驱动程序框架,允许Linux操作系统和应用程序与各种视频设备(如摄像头、视频采集卡等)进行交互。V4L2提供了通用的API,使......
  • V4L2应用程序开发(1)
    参考资料:韦东山第三期 v4l2应用程序开发分为两个部分,数据采集流程和控制流程两个部分 数据采集流程:分为空闲链表和完成链表 驱动程序周而复始地做如下事情:从硬件采集到数据把"空闲链表"取出buffer,把数据存入buffer把含有数据的buffer放入"完成链表"APP也会周而......