H - Selecting courses HDU - 3697 (暴力,枚举,贪心)
2017-07-27 18:58
525 查看
题目链接:点击打开链接
题意:有 n 门课,每一门课需要在规定时间段内选完,且每过五分钟只能选一次,问最多可以选多少门课?题解:
1,将这 n 个时间段排序(按结束时间从小到大,结束时间相同,那么就使开始时间小的在前,结构题排序很简便,一个 sort 就解决了)
2,然后循环暴,第一个循环是0,1,2,3,4;因为是每五分钟选一门,所以在前五秒时开始选是最多的。
3,第二个循环是每次选课的时间点。
4,第三个循环是可以选的课(此时已排序,直接从 0 到 n 就行,因为如果已经选过,就不能再选,所以需要标记选过的)
详情请见代码:
#include <iostream> #include<cstdio> #include<cstring> #include<string> #include<iomanip> #include<vector> #include<algorithm> using namespace std; struct SECOND{ int a; int b; }SECOND[500]; bool cnt(struct SECOND A,struct SECOND B) { if(A.b==B.b){ return A.a<B.a; } else return A.b<B.b; } int main() { int n; while(cin>>n&&n) { for(int i=0;i<n;i++) cin>>SECOND[i].a>>SECOND[i].b; sort(SECOND,SECOND+n,cnt); int cntt=0; int vis[500]; for(int i=0;i<5;i++) { int num=0; memset(vis,0,sizeof(vis)); for(int j=i;j<SECOND[n-1].b;j+=5) { for(int k=0;k<n;k++) { if(vis[k]) continue; if(j>=SECOND[k].a&&j<SECOND[k].b&&vis[k]==0) { num++; vis[k]=1; break; } } } cntt=max(cntt,num); } cout<<cntt<<endl; } return 0; }
相关文章推荐
- Selecting courses HDU - 3697 贪心 思维
- HDU 3697(H) ——Selecting courses(暴力枚举,贪心)
- hdu 3697 Selecting courses (暴力+贪心)
- hdu 3697 Selecting courses (暴力+贪心)
- hdu 6103 暴力枚举+贪心
- Hdu 3697 Selecting courses(贪心+暴力)
- HDU 3697 Selecting courses(贪心+暴力)(2010 Asia Fuzhou Regional Contest)
- HDU 3697 暴力贪心
- hdu 3697 Selecting courses (暴力+贪心)
- hdu 3697(贪心+部分枚举)
- HDU 3697--贪心+暴力
- HDU 4091Zombie’s Treasure Chest(贪心+枚举)
- HDU 5778 abs (数学+暴力枚举)
- hdu 4770 Lights Against Dudely(暴力枚举dfs)
- HDU 1270 小希的数表 (暴力枚举+数学)
- hdu 4445 Crazy Tank (暴力枚举)
- hdu 5595 GTW likes math(暴力枚举查询)
- hdu_4091_Zombie’s Treasure Chest(贪心+枚举)
- hdu 5339 暴力枚举
- HDU - 6152 Friend-Graph(规律/暴力枚举)