HDU1031 Design T-Shirt(java)
2015-10-08 18:18
447 查看
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
题意是给你n个人M件衣服, 选出 前K件衣服评价最大值,再对其编号进行排序
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
题意是给你n个人M件衣服, 选出 前K件衣服评价最大值,再对其编号进行排序
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class P1031 { public static void main(String[] args) { new P1031().run(); } public void run(){ Scanner scanner = new Scanner(System.in); int N, M, K; node[] nodes; while (scanner.hasNextInt()) { N = scanner.nextInt(); M = scanner.nextInt(); K = scanner.nextInt(); nodes = new node[M]; for (int i = 0; i < M; i++) { nodes[i] = new node(); nodes[i].id = i + 1; nodes[i].score = 0; } for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { nodes[j].score += scanner.nextDouble(); } } Arrays.sort(nodes, new Comparator<node>() { @Override public int compare(node o1, node o2) { return o1.score > o2.score ? -1 : 1; } }); Arrays.sort(nodes, 0, K ,new Comparator<node>() { @Override public int compare(node o1, node o2) { return o1.id > o2.id ? -1 : 1; } }); int i; for (i = 0; i < K - 1; i++) { System.out.print(nodes[i].id + " "); } System.out.println(nodes[i].id); } scanner.close(); } class node{ int id; double score; } }
相关文章推荐
- 【Java】 ArrayList与LinkedList的区别
- 【Eclipse】Android 在Eclipse中查看Android Api源码
- java中的大数类
- 解决 Eclipse 项目有红感叹号的方法
- Java学习之文件及异常处理
- Ant实现Java项目的构建与部署
- Mybatis中javaType和jdbcType对应关系
- Java将视频转为缩略图--ffmpeg
- java.lang.RuntimeException: Assetmanager has been closed
- Spring概述
- Exception in thread "main" java.lang.NoClassDefFoundError: aa (wrong name:xxxxx)
- JavaWeb过滤器,过滤请求防止强制访问
- eclipse无法修改字体
- 使用Java设置字型和颜色的方法详解
- SpringAOP切入点表达式
- java中unix时间戳,date以及string之间的形式转换
- 详解Java图形化编程中的鼠标事件设计
- JAVA eclipse 字体的大小正确调整步骤
- Spring MVC 注解说明
- 解决Perhaps you are running on a JRE rather than a JDK?问题