Design T-Shirt

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 6527    Accepted Submission(s): 3061

Problem Description
Soon after he decided to design a T-shirt for our Algorithm Board on Free-City BBS, XKA found that he was trapped by all kinds of suggestions from everyone on the board. It is indeed a mission-impossible to have everybody perfectly
satisfied. So he took a poll to collect people's opinions. Here are what he obtained: N people voted for M design elements (such as the ACM-ICPC logo, big names in computer science, well-known graphs, etc.). Everyone assigned each element a number of satisfaction.
However, XKA can only put K (<=M) elements into his design. He needs you to pick for him the K elements such that the total number of satisfaction is maximized.
 
Input
The input consists of multiple test cases. For each case, the first line contains three positive integers N, M and K where N is the number of people, M is the number of design elements, and K is the number of elements XKA will put
into his design. Then N lines follow, each contains M numbers. The j-th number in the i-th line represents the i-th person's satisfaction on the j-th element.
 
Output
For each test case, print in one line the indices of the K elements you would suggest XKA to take into consideration so that the total number of satisfaction is maximized. If there are more than one solutions, you must output the
one with minimal indices. The indices start from 1 and must be printed in non-increasing order. There must be exactly one space between two adjacent indices, and no extra space at the end of the line.
 
Sample Input
3 6 4
2 2.5 5 1 3 4
5 1 3.5 2 2 2
1 1 1 1 1 10
3 3 2
1 2 3
2 3 1
3 1 2
 
Sample Output
6 5 3 1
2 1
 
Author
CHEN, Yue
 
Source
气的我头疼。丫的蛋,尽管是传说中的简单题,题目一边看懂,解法明白。悲剧在好不easy写完后,超时,栈溢出……超时……溢出……wa将近三十次。最后用了结构,跟可悲的是也他妈超时,更可笑的是结构排序解法程序改为 c写法后 立刻通过。虽说笨死 也不能这样欺负人 时间太多浪费了,但还是感觉学到不少东西;
看看这几种解法:
第一种:开三个数组:一个保存n个人的m个数据,一个保存m个求和 数据。还有一个记录前k个支持度高的方案序号。并排完后降序输出;
另外一种:和第一种基本一样 ,仅仅是第三个数组不是用值来记录序号,而是用数组下标。
第三种:前两种,写着写着就发现序号和每一个方案支持度总和是关联的。结构更方便。
 
一:
#include<iostream>
#include<algorithm>
#include<string.h>
const int M=100;
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
double ls[M][M];
double gq[M];
int flag[M];
int n,m,k,i,j,T;
while(scanf("%d%d%d",&n,&m,&k))
{
int x=0;
memset(gq,0,sizeof(gq));
memset(ls,0,sizeof(ls));
memset(flag,0,sizeof(flag));
for( i=0;i<n;i++)
for(j=0;j<m;j++)
{
scanf("%lf",&ls[i][j]);
gq[j]+=ls[i][j];
}
while(k--)
{
int max=-1;
for(int t=0;t<m;t++)
{
if(gq[t]>max)
{
max=gq[t];
T =t;
}
}
gq[T]=-1;
flag[x++]=T+1;
}
sort(flag,flag+x,cmp); for(int p=0;p<x-1;p++)
printf("%d ",flag[p]);
printf("%d\n",flag[x-1]);
}
return 0;
}

第二:

#include<iostream>
#include<algorithm>
#include<string.h> const int M=10000;
using namespace std; int main()
{
double ls[M][M];
double gq[M];
int flag[M];
int n,m,k,i,j,T;
while(scanf("%d%d%d",&n,&m,&k))
{
int x=0,I=k;
memset(gq,0,sizeof(gq));
memset(ls,0,sizeof(ls));
memset(flag,0,sizeof(flag));
for( i=0;i<n;i++)
for(j=0;j<m;j++)
{
scanf("%lf",&ls[i][j]);
gq[j]+=ls[i][j];
}
while(k--)
{
int max=-1;
for(int t=0;t<m;t++)
{
if(gq[t]>max)
{
max=gq[t];
T =t;
}
}
gq[T]=-1;
flag[T]=1;
} for(int p=m-1;p>=0;p--) {
if(flag[p]==1)
{
x++; if(x==I)
{
printf("%d\n",p+1); break;
} else printf("%d ",p+1);
}
}
}
return 0;
}

第三:AC代码:

#include<cmath>
#include<iostream>
using namespace std;
#include<algorithm>
#include<string.h>
const int N=10005;
struct ls
{
int k;
double sum;
}gq[N]; bool cmp1(ls a,ls b)
{ return a.sum>b.sum; }
bool cmp2(ls a,ls b)
{
return a.k>b.k;
} int main()
{
int n,m,k,i;
double re;
while(~scanf("%d%d%d",&n,&m,&k))
{
for(i=0;i<m;i++)
{
gq[i].k=i;
gq[i].sum=0.0;
}
for(int j=0;j<n;j++)
for(int t=0;t<m;t++)
{
scanf("%lf",&re);
gq[t].sum+=re; } sort(gq,gq+m,cmp1);
sort(gq,gq+k,cmp2);
for(int w=0;w<k-1;w++)
printf("%d ",gq[w].k+1);
printf("%d\n",gq[k-1].k+1);
}
return 0;
}

杭电 HDU 1031 Design T-Shirt的更多相关文章

  1. 杭电 HDU ACM 2795 Billboard(线段树伪装版)

    Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. HDU 1031 Design T-Shirt

    http://acm.hdu.edu.cn/showproblem.php?pid=1031 题意 :n个人,每个人对m件衣服打分,每个人对第 i 件衣服的打分要加起来,选取和前 k 高的输出他们的编 ...

  3. 杭电 HDU 4608 I-number

    http://acm.hdu.edu.cn/showproblem.php?pid=4608 听说这个题是比赛的签到题......无语..... 问题:给你一个数x,求比它大的数y. y的要求: 1. ...

  4. 深搜基础题目 杭电 HDU 1241

    HDU 1241 是深搜算法的入门题目,递归实现. 原题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1241 代码仅供参考,c++实现: #incl ...

  5. 杭电 HDU 1242 Rescue

    http://acm.hdu.edu.cn/showproblem.php?pid=1242 问题:牢房里有墙(#),警卫(x)和道路( . ),天使被关在牢房里位置为a,你的位置在r处,杀死一个警卫 ...

  6. HDU 1031.Design T-Shirt【结构体二次排序】【8月21】

    Design T-Shirt Problem Description Soon after he decided to design a T-shirt for our Algorithm Board ...

  7. ACM 杭电HDU 2084 数塔 [解题报告]

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  8. 杭电 HDU ACM 1698 Just a Hook(线段树 区间更新 延迟标记)

    欢迎"热爱编程"的高考少年--报考杭州电子科技大学计算机学院 Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memor ...

  9. 杭电 HDU ACM Milk

    Milk Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

随机推荐

  1. shell 空间利用

    root #df -h / Filesystem Size Used Avail Use% Mounted on /dev/sda3 3.3G 1.7G 1.5G 54% /

  2. MySQL笔记(二)之数据检索常用关键字

    SELECT 用于数据的选择 语法: SELECT 列 FROM 表; #从表中选择某些列,也可以是*,代表全部列 DISTINCT 当某些列包含重复值的时候,DISTINCT用于过滤掉重复值,使重复 ...

  3. java8新特性——Stream API

    Java8中有两大最为重要得改变,其一时Lambda表达式,另外就是 Stream API了.在前面几篇中简单学习了Lambda表达式得语法,以及函数式接口.本文就来简单学习一下Stream API( ...

  4. [HNOI2012]集合选数 --- 状压DP

    [HNOI2012]集合选数 题目描述 <集合论与图论>这门课程有一道作业题,要求同学们求出\({1,2,3,4,5}\)的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x ...

  5. Varnish与Squid的对比

    Varnish与Squid的对比 说到Varnish,就不能不提Squid.Squid是一个高性能的代理缓存服务器,它和Varnish相比较有诸多的异同点,下面进行分析. 下面是Varnish与Squ ...

  6. Codeforces Round #304 (Div. 2) B. Soldier and Badges 水题

    B. Soldier and Badges Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/54 ...

  7. Two-transistor circuit replaces IC

    Linear Technology's recently introduced LTC4300 chip buffers I2C clock and data lines to and from a ...

  8. gdb 与函数过程

    http://www.lenky.info/archives/2013/02/2202

  9. localhost与127.0.0.1的区别 2

    localhost与127.0.0.1的区别localhost与127.0.0.1的区别是什么?相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析.看来这个 ...

  10. 前端 fetch 通信

    随着前端异步的发展, XHR 这种耦合方式的书写不利于前端异步的 Promise 回调. 而且,写起来也是很复杂. fetch API 本来是在 SW(ServiceWorkers) 中提出的, 不过 ...