【1031 HDU】Design T-Shirt

本文介绍了一道来自HDU ACM在线评测系统的题目(PID 1031),该题要求根据n个人对m个设计元素的满意度评价,选择k个最佳元素并按非递增顺序输出其序号。文中提供了使用C++实现的具体代码及解题思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1031

题意:有n个人给设计中的m个元素评价满意度,然后设计者会找出其中k各元素加到它的设计中,输出前k个元素的序号,并且用非递增的顺序输出。

思路:把各个元素的综合满意度进行排序,找出前k个满意度最高的元素,然后将它们的序号进行排序,然后从大到小输出。

My  DaiMa:

#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct person
{
	double a;
	int flag;//flag用来存元素序号
}s[103];
bool cmp1(person p1, person p2)
{
	return p1.a > p2.a;//按结构体中满意度元素进行排序
}
bool cmp2(person p1, person p2)
{
	return p1.flag > p2.flag;//按结构体中序号元素进行排序
}
int main()
{
	int n, m, t;
	double b;
	while (cin >> n >> m >> t)
	{
		for (int i = 0; i < m; i++)
		{
			s[i].a = 0;
			s[i].flag = i + 1;
		}

		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < m; j++)
			{
				cin >> b;
				s[j].a += b;//求出每个元素的综合满意度
			}
		}
		sort(s, s + m, cmp1);//先把它们按满意度排序
		sort(s, s + t, cmp2);//再把其前k个的序号排一下序
		for (int i = 0; i < t - 1; i++)
			cout << s[i].flag << " ";
		cout << s[t - 1].flag << endl;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值