问题大意:
        就是有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. 201521123115 《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  2. Vue.js项目模板搭建

    前言 从今年(2017年)年初起,我们团队开始引入「Vue.js」开发移动端的产品.作为团队的领头人,我的首要任务就是设计 整体的架构 .一个良好的架构必定是具备丰富的开发经验后才能搭建出来的.虽然我 ...

  3. java继承涉及的动/静态绑定及隐藏

    项目中经常会用到java多态这个特性,之前只知道一些皮毛,现在发现自己对它并没有一个系统的认识,想从新梳理下自己的基础库. 看了java编程思想中对象导论,关于继承的描述:java中的类型不仅仅只是描 ...

  4. websphere部署--web应用-以自己的项目为例

    启动websphere: 1) 启动Manager: /home/wasadmin/IBM/WebSphere/AppServer/bin/startManager.sh 2) 启动Node:     ...

  5. Python: 列表注意细节与元组的基本用法

    列表注意细节: 1.list.clear():将列表中成员清空(与del list区别开) 2.list.copy():复制一份相同的列表(浅COPY,只复制列表第一层) 3.如果两个列表相等,如li ...

  6. Git 基本命令有哪些

    Git 相关命令 git init 初始化一个项目 git clone 利用url 从远程clone下来一个项目 git status 查看当前项目修改状态 git log 查看日志 查看历史记录 g ...

  7. SharedPreferences的使用

  8. jquery对象和js对象

    <ul id="ul1">   <li id="li_1">01</li>   <li>02</li> ...

  9. 个人从源码理解angular项目在JIT模式下的启动过程

    通常一个angular项目会有一个个模块(Module)来管理各自的业务,并且必须有一个根模块(AppModule)作为应用的入口模块,整个应用都围绕AppModule展开.可以这么说,AppModu ...

  10. 【转】独立游戏如何对接STEAM SDK

    独立开发者在对接STEAM SDK之前 首先得先登上青睐之光,也就是我们俗称的"绿光" 一般要先对接G胖家的SDK,然后提交版本,最后等待审核... 我本身是unity 开发,对C ...