题目链接:http://poj.org/problem?id=3988

题意:每种课都有自己的开始开始和结束时间,学生任选一时间点开始选课,一旦开始每5分钟只能选且必选(如果可以)一次。求学生能选到的最多的课数。

分析:因为一开始没仔细看题,没注意到是严格的每5分钟选一次,导致往DP的方向想了半天,WA一次,又因为没注意在结束时刻的课是不能选的(题目也没说太清楚),又WA了一次...杯具。

其实这个题就是一个贪心,因为n很小,n^2就可以过,所以实现很简单:因为每严格5分钟选一次,我们就可以枚举第一次选课的时间,因为枚举超过5次之后就和往前数第5次重合了,且不如那一个优(因为少考虑了一个),所以我们只枚举从最早的开始点开始的5个点就可以了。如果当前的时间有2个或以上的课可以选,则选结束时间最早的那个。

附代码:

View Code

#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<iostream>using namespace std;

int n,ans;int x[510],y[510];int Min,Max,tans,pos;bool b[510];int main(){for (scanf("%d",&n);n;scanf("%d",&n))    {        memset(x,0,sizeof(x));        memset(y,0,sizeof(y));        ans=0;        Min=200000;Max=0;for (int i=1;i<=n;i++)        {         scanf("%d%d",&x[i],&y[i]);         Min=min(Min,x[i]);         Max=max(y[i],Max);         }for (int i=0;i<5;i++)        {            memset(b,false,sizeof(b));            tans=0;for (int j=i;j<=1000;j+=5)            {                pos=-1;for (int k=1;k<=n;k++)if (!b[k] && x[k]<=j && y[k]>j)if (pos==-1 || y[pos]>y[k]) pos=k;if (pos!=-1)                {                          tans++;                          b[pos]=true;                          }                 }            ans=max(ans,tans);            }        printf("%d\n",ans);        }

//system("pause");    return 0;    }

英文题着实让我上火...google翻译的跟shit一样...

转载于:https://www.cnblogs.com/evan-oi/archive/2012/02/22/2363836.html

POJ 3988 Selecting courses相关推荐

  1. HDU3697 Selecting courses

    HDU3697 对课程结束时间由小到大进行排序,之后直接暴力枚举. AC代码: #include <bits/stdc++.h> using namespace std; const in ...

  2. 【转载】图论 500题——主要为hdu/poj/zoj

    转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  3. (精)【ACM刷题之路】POJ题目详细多角度分类及推荐题目

    POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: ...

  4. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  5. poj题目详细分类及算法推荐题目

    DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  1024   Calendar Game       简单题  ...

  6. ACM POJ 题目分类(完整整理版本)

    DP: 1011   NTA                 简单题  1013   Great Equipment     简单题  1024   Calendar Game       简单题   ...

  7. POJ ZOJ题目分类

    POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...

  8. POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)

    水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法:        (1)枚举 (1753,2965)       (2)贪心(13 ...

  9. NOIP 好题推荐(DP+搜索+图论)POJ ZOJ

    NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS)  1090 Chain ->格雷码和二进制码 ...

最新文章

  1. Ironport对邮件主题中包括特殊字符的过滤
  2. Acwing 309. 装饰围栏
  3. c++new时赋初值_C高级编程精髓之内存管理,万千码农踩过的雷,大神带你走出雷区...
  4. 【跃迁之路】【706天】程序员高效学习方法论探索系列(实验阶段463-2019.1.26-27)...
  5. T4 Templates and the Entity Framework
  6. java获取文件大小_Java获取文件大小
  7. elasticsearch6.x.x logstash6.x.x kibana6.x.x Filebeat6.x 配置及安装 CentOS7.3或更高
  8. LINUX doubango编译详细过程记录
  9. Java源码阅读神器之Translation翻译插件
  10. 编译原理实验1——词法分析器设计
  11. 白话空间统计二十四:地理加权回归(一)
  12. Intellij IDEA设置类的文件头注释(@Author)(一)
  13. 安卓获取wifi列表_WiFi探针真被判死刑了吗?
  14. Latex改变图片、表格标题字号
  15. php 验证码数字英文的,PHP 创设扭曲英文验证码
  16. 海康sdkC++二次开发之回放下载
  17. js 读取图片路径并预览图片
  18. 绝望爱の歌---最终兵器彼女
  19. 使用scrapy爬取手机版斗鱼主播的房间图片及昵称
  20. 图像降噪算法matlab,数字图像去噪典型算法及matlab实现

热门文章

  1. JAVA获得当前时间的几种方法
  2. 第八届蓝桥杯java b组第十题
  3. 传感器 Sensor 加速度【示例】
  4. 数据可视化图表ECharts
  5. C# SetCursorPos用法
  6. delphi 的 pos 函数 对中文支持不好。
  7. sccm安装手动下载必备组建
  8. 【转】关于EASYSIZE宏(动态调整控件位置、大小的宏)
  9. [独库骑行之奇山异石]丹霞地貌和雅丹地貌
  10. Linux 命令(123)—— iostat 命令