HDU 3697 Selecting courses
来源:互联网 发布:mac 文件重命名 命令 编辑:程序博客网 时间:2024/06/13 01:56
题意:每隔5分钟选一次课,可以在任意时间点开始,每个时间点最多选一门课,如果选课时间点在这门课的选课时间范围内(开区间)则可以选,求最大的选课数
解题思路:贪心+暴力.将每门课的选课时间按照结束时间排序,并用flag标记每门课,防止同一门课选择两次,然后选课起始时间只需要从0~4这五个时间点开始搜,因为每隔五分钟可以选一次课,假如从0开始,那么选课时间点就是0、5、10、15、20...假如从1开始,那么选课时间点就是1、6、11、17、22...这样每个点都会考虑到,用x数组标记可以选课的时间点,然后从第一门课的起始时间开始一直到结束时间,如果这些时间点里有可以选课的时间,数量就加1,并且还要标记这门课已经选过了,这个选课时间点也不可以再选课了,最后把这n门课还原成都还没有被选的状态,ans不断更新。还要注意的是时间点可以包含左端点但不能包含右端点,例如对左端点0来说,时间点0分11秒是可以选课的,对右端点15来说,15分11秒是不能选的
代码:
#include <iostream>#include <algorithm>#include <string>#include <cstring>#include <cmath>#include <cstdio>using namespace std;struct P{ int st,ed,flag;} p[310];bool cmp(P p1,P p2){ return p1.ed<p2.ed;}int x[1000];int main(){ int n; while(cin>>n&&n) { int r=0; for(int i=0; i<n; i++) { cin>>p[i].st>>p[i].ed; p[i].flag=1; r=max(r,p[i].ed); } sort(p,p+n,cmp); int ans=0; for(int i=0; i<5; i++) { memset(x,0,sizeof(x)); int cnt=0; for(int j=i; j<r; j+=5)x[j]=1; for(int j=0; j<n; j++) { for(int k=p[j].st; k<p[j].ed; k++) { if(x[k]&&p[j].flag) { cnt++; p[j].flag=0; x[k]=0; } } } ans=max(ans,cnt); for(int i=0;i<n;i++) { p[i].flag=1; } } cout<<ans<<endl; } return 0;}
阅读全文
0 0
- HDU 3697 Selecting courses
- HDU 3697 Selecting courses
- HDU 3697 Selecting courses
- 简单贪心-hdu-3697-Selecting courses
- HDU 3697 Selecting courses (贪心)
- hdu 3697 Selecting courses (暴力+贪心)
- HDU 3697 Selecting courses(贪心)
- Hdu 3697 Selecting courses(贪心+暴力)
- hdu 3697 Selecting courses(贪心)
- HDU 3697 Selecting courses(贪心)
- Selecting courses HDU
- Selecting courses HDU
- HDU 3697 Selecting courses 选课(AC代码)贪心
- HDU-3697-Selecting courses(贪心+优先队列)
- Hdoj 3697 Selecting courses 【贪心】
- HDU 3697(H) ——Selecting courses(暴力枚举,贪心)
- hdu 2239 Selecting Courses(二分图最大匹配)
- PKU_2239 Selecting Courses
- 基于稀疏表示的人脸识别
- Linux系统Shell if语句用法小结
- Unix is 命令 (排序和字符串处理) UVA
- jQuery中filter()和find()的区别深入了解
- Oracle where条件,当天时间段
- HDU 3697 Selecting courses
- Glide使用详解(二)
- Android硬件访问服务-Service
- android 显示刚刚下载的图片
- Bandwidth UVA
- 最短路径算法模板:Dijkstra/Floyd/Bellman-Ford模板
- Android中Activity的生命周期【详】
- 查看可执行文件依赖的动态库 ldd
- Spring Boot入门二:使用ThymeLeaf+表单验证