问题大意:
        就是有1--N们课程,每一个课程都有一个考试区间[s,t),左闭右开,没有时间重叠的课程不能安排在一起,让尽量多的课程安排在一起,最少能安排多少天,并输出先后的课程:
题目分析:
       贪心算法的综合运用,关键看怎么贪心,求重叠部分最多的,这个题不同于一般的贪心。我的做法是首先定义一个结构体里面包括课程序号、开始区间S、结束区间t,以及安排天数;第一个排序就是按照开始区间由小到大(如果开始区间相同就是结束区间由小到大);接下来注意啦!!!!!!就是天数的计算了,首先第一个天数是一,接下来判断下一个科目的开始区间是否小于上一科目的结束区间,若果是这两个科目就在同一天(这个时候不要以为就完事了,还要把这上下科目开始区间的大的跟结束区间小的赋值给下一个区间,不然就会输出错误,我第一次提交这点就错了);如果不小于的话,下一科目的天数就要比上一科目的天数加一;这个时候你的代码算是完成的差不多了;接下来就要再次排一次序了,按照天数由小到大排(如果天数相同就按科目由小到大排);这一步完了就是输出了,这就是你看题目输出要求就可以了!哎呦!终于写完了!
 
AC代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=; struct ST
{
int s;
int t;
int num;
int day;
}c[maxn]; bool cmp1(ST a,ST b)
{
if(a.s==b.s)
return a.t<b.t;
else
return a.s<b.s;
} bool cmp2(ST a,ST b)
{
if(a.day==b.day)
return a.num<b.num;
else
return a.day<b.day;
}
int main()
{
int n,i;
while(scanf("%d",&n)!=EOF)
{
for(i=;i<=n;i++)
{
scanf("%d%d",&c[i].s,&c[i].t);
c[i].num=i;
c[i].day=;
}
sort(c+,c+n+,cmp1); c[].day=;
for(i=;i<=n;i++)
{
if(c[i].s<c[i-].t)
{
c[i].day=c[i-].day;
c[i].s = max(c[i].s, c[i-].s);
c[i].t = min(c[i].t, c[i-].t);
}
else
c[i].day=c[i-].day+;
}
sort(c+,c+n+,cmp2);
printf("%d\n",c[n].day); printf("%d",c[].num);
for(i=;i<=n;i++)
{
if(c[i].day==c[i-].day)
printf(" %d",c[i].num);
else
printf("\n%d",c[i].num);
}
printf("\n");
}
return ;
}

[CF] Final Exam Arrangement的更多相关文章

  1. zoj 3721 Final Exam Arrangement【贪心】

    题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3721 来源:http://acm.hust.edu.cn/vjudg ...

  2. Final Exam Arrangement(ZOJ)

    In Zhejiang University, there are N different courses labeled from 1 to N. Each course has its own t ...

  3. ZOJ-3721 Final Exam Arrangement 贪心

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3721 容易的贪心题,排个序.. //STATUS:C++_AC_ ...

  4. HDU 6651 Final Exam (思维)

    2019 杭电多校 7 1006 题目链接:HDU 6651 比赛链接:2019 Multi-University Training Contest 7 Problem Description Fin ...

  5. 2019 Multi-University Training Contest 7 Kejin Player Final Exam

    Kejin Player 期望DP 题意: 初始等级为1,每一级有四个参数 r , s , x , a . 每一级有一个概率p=r/s花费a的代价升级到下一级,失败可能会倒退到x级 设从 l 到 r ...

  6. 2019HDU多校第七场 HDU6651 Final Exam

    一.题目 Final Exam 二.分析 题目说的比较绕,总之一定要记住,$n$个题目都可以做,至少作对$k$到,但是做题目的人不知道每道题对应的分数. 作为出题人,如果他是田忌,肯定不会去在做题目的 ...

  7. 有感于Java Final Exam

    秋季学期的java已经结课了,当看到教务平台贴出的通知说考试形式为单选题时,心中喜忧参半. 可喜的是这种考试形式还是比较得民心,毕竟除了判断题,最好做的也就是单选题了. 然而期中考试选择题50%的命中 ...

  8. HDU 6651 Final Exam

    hdu题面 Time limit 2000 ms Memory limit 524288 kB OS Windows 吐槽 比赛时候晕死了-- 解题思路 先留坑 公式法 https://blog.cs ...

  9. Algorithm lesson final exam

    1.algorithm analysis O B/W/AV/AMOR,混入其他问题,设计+分析 2.传统算法(肯定要考) 1)divide and conquer master therem. rec ...

随机推荐

  1. java:java构造器和java方法的区别

    构造函数(构造器)是一种特殊的函数.其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.构造函数与类名相同,可重载多个不同的构造函数.在JA ...

  2. mshadow的原理--MXNet

    mshadow的原理--MXNet 这文章主要解释了表达式模板的工作原理(也是mshadow的主要原理),文章的前半部分是翻译自exp-template/README.md.我们会解释它为什么会影响编 ...

  3. .Net45下HttpClient的几个缺陷

    前言 最近在写WebClientApi这个组件,底层使用HttpClient,发现HttpClient有许多低级的错误,使用者一不小心就可能会正常的去调用它的这些错误,得不到预期的结果.本文我把我认为 ...

  4. centos 7(Linux) 下yum安装mysql

    1:查询centos7 中是否有可安装的mysql.命令查询 yum list mysql* 没有可安装的mysql软件... 2:sudo rpm -Uvh http://dev.mysql.com ...

  5. XML的序列化(Serializer)

    步骤: //1获取XmlSerializer 类的实例 通过Xml这个工具类去获取 XmlSerializer xmlSerializer = Xml.newSerializer(); try { / ...

  6. 为什么自学java的人99%都学不会?

    在学习java这条路上,有一类自学的学员,总让我感慨良多.这类学员,往往每天表现非常勤奋的学习,但学会的人却很少.他们极期勤奋,那么努力的学,也很认真,为什么就是学不会java呢? 通过小橙子我的大量 ...

  7. xcode7.3 iTunes Store operation failed解决

    使用apploader上传程序 提示:如果您安装了XCode开发环境.在/Applications/XCode.app/Contents/Applications目录中可以找到Application ...

  8. Oculus Store游戏下载默认路径修改方法

    最近在测试一款VR游戏,所以在硬件设备上选择了HTC Vive和Oculus两款眼镜.相对而言,HTC安装比较人性化:支持自定义安装路径,而且可在界面更改应用程序下载位置,如图所示: 这下替我节省了不 ...

  9. 在JavaScript中使用json.js:Ajax项目之POST请求(异步)

    经常在百度搜索框输入一部分关键词后,弹出候选关键热词.现在我们就用Ajax技术来实现这一功能. 一.下载json.js文件 百度搜一下,最好到json官网下载,安全起见. 并与新建的两个文件部署如图 ...

  10. 『诡异的』VL10B创建外向交货单出错解决全过程

    一直觉得SAP STO的业务模式配置起来还是挺简单的,无非就是关联一下采购单与交货单的关系,以及相应工厂的装运数据,其他像主数据的设置也没有什么特别的.相比ICS模式,它少了IDOC的配置,所以还是很 ...