ACM ProblemB
来源:互联网 发布:软件开发自学 编辑:程序博客网 时间:2024/06/05 19:15
我现在做的是编号为1001的试题,具体内容如下:
Problem B
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 226 Accepted Submission(s) : 68
Problem Description
There is a pile of n wooden sticks. The length and weight of each stick are known in advance. The sticks are to be processed by a woodworking machine in one by one fashion. It needs some time, called setup time, for the machine to prepare processing a stick. The setup times are associated with cleaning operations and changing tools and shapes in the machine. The setup times of the woodworking machine are given as follows:
(a) The setup time for the first wooden stick is 1 minute.
(b) Right after processing a stick of length l and weight w , the machine will need no setup time for a stick of length l' and weight w' if l<=l' and w<=w'. Otherwise, it will need 1 minute for setup.
You are to find the minimum setup time to process a given pile of n wooden sticks. For example, if you have five sticks whose pairs of length and weight are (4,9), (5,2), (2,1), (3,5), and (1,4), then the minimum setup time should be 2 minutes since there is a sequence of pairs (1,4), (3,5), (4,9), (2,1), (5,2).
(a) The setup time for the first wooden stick is 1 minute.
(b) Right after processing a stick of length l and weight w , the machine will need no setup time for a stick of length l' and weight w' if l<=l' and w<=w'. Otherwise, it will need 1 minute for setup.
You are to find the minimum setup time to process a given pile of n wooden sticks. For example, if you have five sticks whose pairs of length and weight are (4,9), (5,2), (2,1), (3,5), and (1,4), then the minimum setup time should be 2 minutes since there is a sequence of pairs (1,4), (3,5), (4,9), (2,1), (5,2).
Input
The input consists of T test cases. The number of test cases (T) is given in the first line of the input file. Each test case consists of two lines: The first line has an integer n , 1<=n<=5000, that represents the number of wooden sticks in the test case, and the second line contains n 2 positive integers l1, w1, l2, w2, ..., ln, wn, each of magnitude at most 10000 , where li and wi are the length and weight of the i th wooden stick, respectively. The 2n integers are delimited by one or more spaces.
Output
The output should contain the minimum setup time in minutes, one per line.
Sample Input
3 5 4 9 5 2 2 1 3 5 1 4 3 2 2 1 1 2 2 3 1 3 2 2 3 1
Sample Output
213
简单题意:
排放木棒,每次排放木棒花费1分钟,下一个木棒的长度和重量都比上一个大,否则,则再需要1分钟进行排放木棒。
解题思路:
要用“贪心算法”,先根据木棒的长度进行升序排列。然后再对重量进行判断,按重量进行分组,把第一个木棒放在第一组,如果第二个木棒的重量比第一个木棒的重量大,则它也是第一组,否则,就把它放在第二组,再往后进行判断,如果这个木棒的重量比第一组中最后一个木棒的重量小,再与第二组的最后一个木棒进行比较,如果比这个大的话就把它放在这个组,否则,就把它放在第三组,以后比较依此类推。
编写代码:
#include <iostream>
#include <algorithm>
using namespace std;
struct stick{
int length;
int weight;
};
bool cmp(stick a, stick b)
{
if (a.length == b.length)
return a.weight < b.weight;
else
return a.length < b.length;
}
int main()
{
stick a[5000];
int b[5000];
int n;
cin >> n;
while (n != 0)
{
int t, group;
cin >> t;
for (int i=0; i<t; i++)
{
cin >> a[i].length >> a[i].weight;
}
sort(a, a+t, cmp);
b[0] = 1;
for (int i=1; i<t; i++)
{
group = 0;
for (int j=0; j<i; j++)
if(a[i].weight < a[j].weight && group < b[j])
group = b[j];
b[i] = group + 1;
}
int minute = 0;
for (int i=0; i<t; i++)
if (b[i] > minute)
minute = b[i];
cout << minute << endl;
n--;
}
}
0 0
- ACM ProblemB
- problemB
- problemB
- 1002 ProblemB
- 1002 ProblemB
- BZOJ2301 Problemb
- 【HAOI2011】【BZOJ2301】ProblemB
- 课程练习四-ProblemB
- [BZOJ2301]HAOI2011 ProblemB|莫比乌斯
- CF#317Div.2,ProblemB,水题
- 【线段树】【3-21个人赛】【同样的problemB】
- 2016sdau课程练习专题一 1001 problemB
- 2016黑龙江省赛problemB *随机数*已知三点求外接圆圆心模板
- ACM
- acm
- ACM
- acm
- ACM!!
- Hbase shell详情
- 打印1到最大的n位数
- PHP字符串函数之 strstr stristr strchr strrchr
- Android_SlidingMenu开源项目_导航框架实现侧滑
- poj 备忘录
- ACM ProblemB
- USACO-Section 3.2 Feed Ratios(枚举)
- hdu4825
- MVC 与 SSH(个人总结)
- android弹出软键盘,view整体上移问题
- java 的float型数据保存到数据库中变成了整数
- ACM第一次练习—1006G
- 精准剖析白帽SEO和黑帽SEO的区别
- Java异常处理实例分析--六种异常处理的陋习