免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2182 | 回复: 0
打印 上一主题 下一主题

HDU_2037.今年暑假不AC [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-06 19:10 |只看该作者 |倒序浏览
Date: 2009 / 05 / 06
Problem Description:
http://acm.hdu.edu.cn/showproblem.php?pid=2037

Problem analysis:
第一次接触这题的时候没什么感觉,随着时间的推移,知道这题原来是要贪心的。当然也看过动态规划的算法,不过动态规划的那种不是很明白。贪心和动态规划是两个难点。一定要好好掌握。做个贪心王,哈哈。
大体思路是这样的:题目给定了节目的开始和结束时间,可以按结束时间对其排序。在结束时间一样的情况下,把开始时间早的排在前面。这样便形成了一个可以贪心的结构,从头开始遍历,把能够看的都看了。能够看的就是从第二个元素开始满足他的起始时间大于前一个元素的结束时间节目。具体实现代码如下,当然用库函数写会更精简点,但一些函数在练习的时候还是手工去实现比较好:

Code:
1

#include iostream>
2

3

using namespace std;
4

5

int main()
6

{
7

    //freopen("d:/test.in","r",stdin);
8

    int n,ts[101],te[101],i,j,k,t;
9

    while(cin>>n&&n)
10

    {
11

    for(i=0; in; ++i)
12

    {
13

        cin>>ts;
14

        cin>>te;
15

    }
        // sort
16

    for(i=1; in; ++i)
17

        for(j=0; jn-i; ++j)
18

            if(te[j]>te[j+1])
19

            {
20

                t=te[j];te[j]=te[j+1];te[j+1]=t;
21

                t=ts[j];ts[j]=ts[j+1];ts[j+1]=t;
22

            }
       //  select as much as you could
23

    t=1;k=te[0];
24

    for(i=0; in-1; ++i)
25

       for(j=i+1; jn; ++j)
26

       {
27

           if(kts[j])
28

           {
29

               i=j-1;
30

               k=te[j];
31

               t++;
32

               break;
33

           }
34

       }
35

       couttendl;
36

    }
37

}

@author: fleap


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/96001/showart_1920254.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP