贪心算法 1008
来源:互联网 发布:大额淘宝优惠券哪里领 编辑:程序博客网 时间:2024/06/08 00:04
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 ( 9 , 4 ) , ( 2 , 5 ) , ( 1 , 2 ) , ( 5 , 3 ) , and ( 4 , 1 ) , then the minimum setup time should be 2 minutes since there is a sequence of pairs ( 4 , 1 ) , ( 5 , 3 ) , ( 9 , 4 ) , ( 1 , 2 ) , ( 2 , 5 ) .
(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 ( 9 , 4 ) , ( 2 , 5 ) , ( 1 , 2 ) , ( 5 , 3 ) , and ( 4 , 1 ) , then the minimum setup time should be 2 minutes since there is a sequence of pairs ( 4 , 1 ) , ( 5 , 3 ) , ( 9 , 4 ) , ( 1 , 2 ) , ( 2 , 5 ) .
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 2n 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
超级标准的贪心算法
不过加一个 自定义数组标记是否被选
就好了~
#include<iostream>#include<string.h>#include<set>#include<stdio.h>#include<vector>#include<algorithm>#include<numeric>#include<math.h>#include<string.h>#include<sstream>#include<stdio.h>#include<string>#include<cstdlib>#include<algorithm>#include<iostream>#include<map>#include<queue>#include<string>using namespace std;struct hh{ int a; int b;};bool cmp(const hh &s,const hh &w){ if(s.a<w.a) return true; else if(s.a==w.a)return s.b<w.b; return false;}int main(){ int n; cin>>n; int i; hh a[10000]; int b[10000]; int max; int t; for(i=1;i<=n;i++) { int w; cin>>w; int j; for(j=1;j<=w;j++) { cin>>a[j].a; cin>>a[j].b; } sort(a+1,a+w+1,cmp); memset(b,0,sizeof(b)); int l; int sum; sum=0; int i,paopao ,s,ss,sss,ff; for(j=1;j<=w;j++) { if(b[j]==1) continue; b[j]=1 ; sum++; paopao=a[j].b; for(ss=j+1;ss<=w;ss++) { if(paopao<=a[ss].b&&b[ss]==0) { paopao=a[ss].b; b[ss]=1; } } sss=0; for(ff=1;ff<=w;ff++) if(b[ff]==1) sss++; if(sss==w) break; } cout<<sum<<endl; } return 0;}
0 0
- 贪心算法 1008
- 贪心算法4之1008
- 【贪心】贪心算法总结
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- 贪心算法
- SPOJ 1676 GEN - Text Generatord
- 操作符分类
- 不错的源码网站
- 1951: [Sdoi2010]古代猪文|数论大合集
- Creating-Observables
- 贪心算法 1008
- A(1000)
- PHP面向对象的程序设计
- 为什么说大数据技术的核心是Map技术
- opencv和linux的关联
- 关于子窗口与父窗口传值问题
- 3473: 字符串/3277: 串 后缀数组
- 用 Docker 构建、运行、发布来一个 Spring Boot 应用
- 基于随机游走的社团划分算法label progation 的python实现