码迷,mamicode.com
首页 > 其他好文 > 详细

2016暑假集训训练2 I题 Doing Homework again

时间:2016-07-22 21:26:40      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

傻逼贪心题。

先按照扣分从大到小排序,分数相同则按照截止日期从小到大排序。。
 然后按顺序,从截止日期开始往前找没有占用掉的时间。
如果找不到了,则加到罚分里面。
 
# include <stdio.h>
# include <stdlib.h>
# include <string.h>

int h[1005][2], n, visit[1005];

int comp(const void * a, const void * b)
{
	return *(((int*)b)+1) - *(((int *)a)+1);
}

int main (void)
{
	int t, i, j, day, sum, min, v;
	scanf("%d",&t);
	while (t--) {
		scanf("%d",&n);
		for (i=0; i<n; i++) 
			scanf("%d",&h[i][0]);
		for (i=0; i<n; i++)
			scanf("%d",&h[i][1]);
		qsort(h,n,sizeof(h[0]),comp);
		memset(visit,0,sizeof(visit));
		for (i=0, sum=0; i<n; i++) {
			for (j=h[i][0]; j>0; j--) {
				if (visit[j] == 0) {
					visit[j] = 1;
					break;
				}
			}
			if (j == 0) sum += h[i][1];
		}
		printf("%d\n",sum);
	}
	return 0;
}

  

2016暑假集训训练2 I题 Doing Homework again

标签:

原文地址:http://www.cnblogs.com/lishiyao/p/5697094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!