问题大意:
        就是有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 第十四周总结

    1. 本周学习总结 2. 书面作业 1. MySQL数据库基本操作 2. 使用JDBC连接数据库与Statement 2.1 使用Statement操作数据库.(粘贴一段你认为比较有价值的代码,出现学 ...

  2. Java课程设计-计算器

    1.团队课程设计博客链接 http://www.cnblogs.com/yuanj/p/7072137.html 2.个人负责模块或任务说明 监听器的设置 3.自己的代码提交记录截图 //注册各个组件 ...

  3. python实例编写(3)--对话框,多窗口,下拉框,上传文件

    一.对话框: 例:点击百度的登录,弹出的小窗口 #coding=utf-8 from selenium import webdriver from time import sleep dr=webdr ...

  4. Javascript-正则表达式-开发中的使用.

    -- "(-1~99)之间 -1表示无限次!" pattern="^((-1)|([0-9]{0,2}))$" -- "(0~99.99)之间 的金额 ...

  5. Android 之数据存储(sdCard,sharedPreference,sqlite数据库)

    sdCard:默认路径在 /storage/sdcard/... Android支持OpenFileOutput和openFileInput方式访问手机存储器上的文件. Context提供了如下两个方 ...

  6. java基本类型与Hadoop常见基本类型的对照

    Long LongWritable Integer IntWritable Boolean BooleanWritable String Text 1.java类型转化为hadoop基本类型 调用ha ...

  7. 使用cocos2d脚本生成lua绑定

    这几天要老大要求把DragonBones移到cocos2dx 3.0 里边,并且绑定lua使用接口.因为刚学lua,使用的引擎也刚从2.2改为3.0,各种不熟悉,折腾了好几天才弄完,有空了总结一下 这 ...

  8. Zabbix 添加脚本检测IP变化

    监控环境 IP和HOSTNAME 有时会有变化.但目前是通过IP地址监控,不是DNS名,添加一个外部脚本,发现IP和HOSTNAME发生变化时告警. vim /usr/local/etc/zabbix ...

  9. 匹配替换第n个字符串

    var name = "questions[0][question]",i=0; name.replace(/\[.+?\]/g, function(match, pos, ori ...

  10. 集成Mybatis

    本文根据个人喜好记录"腾讯课堂"的<Java项目之Maven+SpringMVC+Spring+Mybatis+MySql消费查询系统>视频教程关键步骤信息,视频地址: ...