贪心专练1 区间调度最多问题
2017-12-17 17:42
169 查看
题意:
问题描述: 有n项工作,每项工作分别在si开始,ti结束。对每项工作,你都可以选择参加或不参加,但选择了参加某项工作就必须至始至终参加全程参与,即参与工作的时间段不能有重叠(即使开始的时间和结束的时间重叠都不行)。 限制条件: 1<=n<=100000 1<=si<=ti,=109 |
样例: 输入 n=5 s={1,2,4,6,8} T={3,5,7,9,10} 输出 3(选择工作1, 3, 5) ————————————————————————————————————————————— 详解见白书:最优规则是:选取结束时间最短的工作。 #include <stdio.h> struct { int end; int start; }time[1000],swap; int main() { int n; while(scanf("%d",&n)!=EOF) { int i,j; int sum=0; for(i=0;i<n;i++) { scanf("%d%d",&time[i].start,&time[i].end); } for(i=1;i<n;i++)//排序是关键:把结束时间最早的工作排在最前面,而开始时间的选取只需要大于上一工作的开始即可 { for(j=n-1;j>=i;j--) { if(time[j].end<time[j-1].end) { swap=time[j]; time[j]=time[j-1]; time[j-1]=swap; } } } int t=0; for(i=0;i<n;i++) { if(t<time[i].start)//对于结束时间重和而开始时间不同该选取谁问题可以忽略,只要结束时间相同,不论选谁工作个数都只是增加一。 { sum++; t=time[i].end;//更新t } } printf("最多可参与工作数目为 :%d\n",sum); } return 0; } |
相关文章推荐
- 区间调度问题(贪心)
- HDU 2037 今年暑假不AC (贪心---求最多不相交区间问题)
- 简单贪心 区间调度问题
- 几个经典的贪心区间问题之区间调度hdu2037
- 贪心算法之区间调度问题
- 区间调度问题-贪心选择
- 【动态规划-贪心】区间调度问题
- 贪心入门题——看电视(区间调度问题)
- hdu 2037(贪心算法之区间调度问题)
- 图的点着色、区间着色问题及其应用(基于贪心思想的DFS回溯法求点着色问题和区间着色算法求解任务调度问题)
- 区间调度问题(贪心)
- 初入算法篇(贪心) 最多不相交区间问题HDU2037+FOJ1230
- 贪心基础题(区间调度问题+POJ_3617+POJ_3069)
- 贪心算法之区间调度问题
- 贪心-区间调度问题
- Uva 11134 问题分解,贪心策略区间选点问题
- 区间相关问题的学习: 最多不相交区间问题,区间选点问题与区间覆盖问题
- NOIP 2010 T4 浅谈如何“引水入城”,泛洪填充法BFS架构FLOODFILL及一类区间覆盖问题贪心求法
- 贪心区间调度 Greedy interval scheduling problem
- UVAlive 2326 Moving Tables(贪心 + 区间问题)