您现在的位置: 爱51代码网 >> 范文 >> 文章正文
hdu 1789 贪心算法源代码

hdu 1789 贪心算法源代码
此题大致思路,既然要计算最少扣多少分,就要在最后时间之前把扣分最多的作业先安排了。如果扣分一样多的话,那必然要把时间比较紧的先安排了。所以先按扣分的高低,由高向低排序,如果两门课扣分相同就按他们的结束时间由低向高排序!然后安排即可!


[cpp] view plaincopyprint?
01.#include<stdio.h>  
02.#include<stdlib.h>  
03.#include<string.h>  
04.#define N 1000  
05.int f[N+5]; 
06.struct T 
07.{ 
08. int deadline; 
09. int score; 
10.}homework[N+5]; 
11.int cmp(const void*a,const void*b) 
12.{ 
13. if((*(struct T*)a).score!=(*(struct T*)b).score) 
14.  return (*(struct T*)b).score-(*(struct T*)a).score;  毕业论文 
15. else 
16.  return (*(struct T*)a).deadline-(*(struct T*)b).deadline; 
17.} 
18.int main() 
19.{ 
20. int C,n,i,j,sum; 
21. scanf("%d",&C); 
22. while(C--) 
23. { 
24.  memset(f,0,sizeof(f)); 
25.  scanf("%d",&n); 
26.  for(i=0;i<n;i++) 
27.   scanf("%d",&homework[i].deadline); 
28.  for(i=0;i<n;i++) 
29.   scanf("%d",&homework[i].score); 
30.  qsort(homework,n,sizeof(homework[0]),cmp); 
31.  for(i=0,sum=0;i<n;i++) 
32.  { 
33.   for(j=homework[i].deadline;j>0;j--)          //从最后的期限开始考虑前几天有没有被安排  
34.   { 
35.    if(f[j]==0) 
36.    { 
37.     f[j]=1;break; 
38.    } 
39.   } 
40.   if(j==0)                                                    //如果一直到结束都没有空余时间,最后只能扣分  
41.    sum+=homework[i].score; 
42.  } 
43.  printf("%d\n",sum); 
44. } 
45. return 0; 
46.} 

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    mysql主从同步延迟方案解决的学习
    青岛科学六年级下册教材分析
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    青少年吸烟心理探析
    保险受益人制度相关问题的探讨
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    保险受益人制度相关问题的探讨
    初中生地理读图能力培养的研究
    搞笑生日祝福
    中间件基础知识
    OK6410 tftp下载内核、文件系
    java实现u盘指定内容的自动复
    一个简单实用的轮播器源代码
    js只能输入数字和小数点的文
    ExtJS & GTGrid 简单用户管理
    设置<img>在表格<table>中的
    Android init进程启动过程分
    应用内购买 In-App Purchase
    Android之Activity的taskAff
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |