1065. 单身狗

标签: PAT
67人阅读 评论(0) 收藏 举报
分类:

1065. 单身狗(25)

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

输入格式:

输入第一行给出一个正整数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 8888
8

解题思路:

这题我用了四个数组来存储信息,来换取时间上的高效。其中relation:保存夫妻关系 tempRelation:保存输入的人的原有夫妻关系,单向保存。 tempRelation2:保存输入人的ID,方便后面提取 。 tempRelation3:保存单身ID,最后排序输出。其中一定要注意,在初始化数组的时候一定不能初始化为0,因为00000也是一个ID,另外在打印输出结果的时候一定要补0,防止出现00001输出为1的情况。代码中我给了详细注释,应该还是比较好理解的。

程序:

#include <stdio.h>
#include <stdlib.h>
#include <algorithm>

using namespace std;

int main(int argc, char const *argv[])
{
	/*cnt:落单的个数  temp2Idx:tempRelation2的下标*/
	int N, M, cnt = 0, temp2Idx = 0;
	/*relation:保存夫妻关系 tempRelation:保存输入的人的原有夫妻关系,单向保存
	  tempRelation2:保存输入人的ID,方便后面提取  tempRelation3:保存单身ID*/
	long relation[100001] = {100000}, tempRelation[100001] = {100000}, tempRelation2[100001], tempRelation3[100001];
	scanf("%d", &N);
	while (N--)
	{
		long husID, wifeID;		// 丈夫的ID, 妻子的ID
		scanf("\n%ld %ld", &husID, &wifeID);
		/*建立联系*/
		relation[husID] = wifeID;
		relation[wifeID] = husID;
	}
	scanf("\n%d\n", &M);
	for (int i = 0; i < M; i++)
	{
		long ID;
		scanf("%ld",&ID);
		tempRelation2[temp2Idx++] = ID;		// 保存输入的ID,方便后面取
		tempRelation[ID] = relation[ID];	// 首先建立起输入ID的联系
	}
	for (int i = 0; i < temp2Idx; i++)
	{
		long ID = tempRelation2[i];			// 提出ID
		/* 如果当前ID的配偶ID(没有配偶就是100000)在tempRealtion对应不是当前ID,说明就是单身狗*/
		if (tempRelation[relation[ID]] != ID)	
			tempRelation3[cnt++] = ID;		// 把该单身狗加入tempRelation3
	}
	sort(tempRelation3, tempRelation3+cnt);	// 排序
	printf("%d\n", cnt);
	for (int i = 0; i < cnt; i++)			// 格式化输出
	{
		if (i == 0)
			printf("%05ld", tempRelation3[i]);
		else
			printf(" %05ld", tempRelation3[i]);
	}
	return 0;
}
如果对您有帮助,请点个赞哦~
查看评论

1065. 单身狗(25)

1065. 单身狗(25) c++ map AC代码查看1121. Damn Single (25) 或者github:1065. 单身狗(25)#include #include int c...
  • gl486546
  • gl486546
  • 2016-12-10 19:48:18
  • 1093

patd乙级真题 1065. 单身狗(25)

题目链接               点击打开链接 思路 定义couple数组,couple[i] == j,若j == 100001代表i没对象,否则i的对象为j。定义people数组...
  • a823837282
  • a823837282
  • 2017-11-29 02:57:05
  • 58

1065. 单身狗(25)(C++)

“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。输入格式:输入第一行给出一个正整数N(&amp;lt;=50000),是已知夫妻/伴侣的对数;随后...
  • qq_41562704
  • qq_41562704
  • 2018-02-14 23:22:35
  • 29

1065单身狗(25)

1065. 单身狗(25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standar...
  • Ten_der_ness
  • Ten_der_ness
  • 2016-12-14 10:12:39
  • 361

1065. 单身狗(25)--Python

测试点1测试的是输出的格式,使用join函数连接输出就会报错; 最后两个测试点运行超时 num_sum = input() num_sum = int(num_sum) list = [] cou...
  • baidu_38271024
  • baidu_38271024
  • 2017-12-06 10:03:12
  • 110

PAT Basic 1065. 单身狗(25)(C语言实现)

题目 “单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。 输入格式: 输入第一行给出一个正整数N( 输出格式: 首先第一行输出落单客人的总人数;随...
  • Oliver__Lew
  • Oliver__Lew
  • 2017-05-18 23:47:14
  • 933

1065. 单身狗 后面两个测试点运行超时

题目如下 --------------------------------------------------------- “单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型...
  • qiuhong0720
  • qiuhong0720
  • 2017-02-13 15:57:00
  • 215

PAT-1065.单身狗-19分-102ms

#include #define MAX 50001 int main(){ int n;scanf("%d",&n); int couple[MAX]; for (int i=0;i
  • FKDXHS
  • FKDXHS
  • 2016-12-16 11:45:01
  • 372

PAT-B 1065. 单身狗

PAT-B 1065. 单身狗“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。输入格式:输入第一行给出一个正整数N(...
  • ww1473345713
  • ww1473345713
  • 2017-01-14 21:41:20
  • 291

1065. 单身狗(25)-PAT乙级真题

“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。 输入格式: 输入第一行给出一个正整数N( 输出格式: 首先第一行输出落单客人的总人数;随...
  • liuchuo
  • liuchuo
  • 2016-12-10 22:54:34
  • 996
    个人资料
    等级:
    访问量: 3341
    积分: 419
    排名: 19万+
    文章存档
    最新评论