算法课(经典贪心)
来源:互联网 发布:部队伙食 知乎 编辑:程序博客网 时间:2024/06/05 16:32
Description
在将来的某一天,ACM-ICPC在我们学校越来越受到重视了,大家对算法的学习热情非常高,学校决定每天都开设很多算法普及课,由于课程太多,学校没有太多的老师,于是学校派我们ACM集训队的成员去当小讲师。
每个课程都有固定的开始时间和结束时间,我们集训队的小讲师精力非常充沛,只要课程不冲突,讲师们都乐意去上,上课时间冲突的话视为两个课程冲突,比如(1~3和2~4)就冲突,(1~5和5~10)也算冲突。
现在安排课程讲师的Mrs.Zhang非常头疼,因为课程成百上千,需要的讲师也很多很多,为了安排这些讲师,Mrs.Zhang首先要知道每天最少需要多少讲师,你能告诉他吗?
Input
第一行输入一个整数T(T<=20),代表有T组数据。
对于每组数据,第一行有一个整数N(0 <= N < 100),表示课程的数目。接下来N行,每行有两个整数S和T, (0 <= S < T <= 24), 表示该课程的开始时间和结束时间。
Output
输出T行,每行输出一个整数。
Sample Input
231 43 56 741 23 43 67 8
Sample Output
22
开始的时候还以为直接排序看时间是否冲突就行,结果发现这样的话根本不是最优解。。。
用开始的时间排序,然后记录每一位老师的结束时间,如果可能发生冲突就用于比对查看,经典的贪心思想。
直接贴代码:
#include<iostream>#include<algorithm>#include <cstdio>#define INF 0x3f3f3f3f;using namespace std;int teacher[50],tcou=0;struct S{int a, b;}s[105];bool cmp(S s1,S s2){return s1.a<s2.a;}bool judge(S s){for(int i=0;i<tcou;i++) if(s.a>teacher[i]){ teacher[i]=s.b; return true; }return false;}int main(){int T;cin>>T;while(T--){int n,a,b;tcou=0;cin>>n;for(int i=0;i<n;i++){cin>>s[i].a>>s[i].b;}sort(s,s+n,cmp);//按照开始时间排序 int count = 1;teacher[tcou++]=s[0].b;for(int i=1;i<n;i++){ if(s[i].a<=s[i-1].b)//当前的开始时候上一个还没有结束,可能有矛盾 if(judge(s[i]))//判断其他所有的老师是否能够代替完成 continue; else{//所有的老师都没有时间,增加一名老师 count++; teacher[tcou++]=s[i].b;} else teacher[0]=s[i].b;//两个课程中间有间隔,任意老师都可以完成,没有冲突, }if(n==0) cout<<0<<endl;else cout<<count<<endl;}return 0;}
0 0
- 算法课(经典贪心)
- 贪心算法经典例子
- 贪心算法经典例子
- 贪心算法经典例子
- 贪心算法-经典例子
- 经典算法之:贪心算法
- 经典算法之-----贪心算法
- 贪心算法为什么就是经典?
- 经典算法题12-贪心算法
- <五大经典算法> 二、贪心算法
- 经典算法贪心法之最少硬币
- hdu1009,FatMouse' Trade,经典贪心算法
- 贪心算法的三个经典问题
- 贪心算法及几个经典例子
- 贪心算法——经典习题
- HDU1052 Tian Ji (经典贪心算法)
- 贪心算法及几个经典案例
- Gone Fishing (经典贪心)
- 现代操作系统之处理器
- android 手机找不到 data/data/package_files/ 文件夹
- 10进制对36进制内任意进制转换
- 關於PL/SQL Developer的配置與快速遷移
- printf()输出格式
- 算法课(经典贪心)
- Android点击效果
- Unity3d+Jenkins 自动编译iOS、Android版本
- 笔试面试经验
- 阿里巴巴离职DBA职业生涯总结:突然35岁
- cocos2dx3.5 interval 中看两个lambda替换menu_selector,schedule_selector
- 【Android教学-零基础到就业】面向对象(1)
- windows内核调试工具
- leetcode 日经贴,Cpp code -Merge Two Sorted Lists