HDU 1031 - Design T-Shirt

本文介绍了一种通过两遍排序解决特定问题的算法实现。首先对所有元素按其总和进行排序,然后对前k个元素按其位置进行排序,以此来确定最终的输出顺序。该算法使用了C++实现,并提供了完整的源代码。

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

两遍排序

叫我水题小王子

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 int n,m,k;
 5 int ans[10000];
 6 struct P{
 7     double v;
 8     int pos;
 9 }s[10000];
10 double tmp;
11 bool cmp1(P a,P b){
12     return a.v>b.v;
13 }
14 bool cmp2(P a,P b){
15     return a.pos>b.pos;
16 }
17 int main()
18 {
19     while(~scanf("%d%d%d",&n,&m,&k))
20     {
21         for(int i=1;i<=m;i++) s[i].pos=i,s[i].v=0;
22         for(int i=1;i<=n;i++)
23         {
24             for(int j=1;j<=m;j++)
25             {
26                 scanf("%lf",&tmp);
27                 s[j].v+=tmp;
28             }
29         }
30         sort(s+1,s+m+1,cmp1);
31         sort(s+1,s+k+1,cmp2);
32         for(int i=1;i<k;i++) printf("%d ",s[i].pos);
33         printf("%d\n",s[k].pos);
34     }
35 }

 

转载于:https://www.cnblogs.com/nicetomeetu/p/5446408.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值