本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~
贪心
要想增加的分数最小,所以要在最后完成时光之前把扣分最多的要完成,所以按照扣除分数的大小排序,这里有个问题,就是排完序前面的规定时光可能小于前边的,选择前边作业的完成时光要尽量大,为前面的作业留下时光。
#include<stdio.h> #include<string.h> #include<stdlib.h> int time[1010]; struct op { int t,cont; }p[1010]; int cmp(const void *a,const void *b) { struct op *c,*d; c=(struct op *)a; d=(struct op *)b; if(c->cont!=d->cont) return d->cont-c->cont; else return c->t-d->t; } int main() { int i,j,sum,n,t; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&p[i].t); for(i=0;i<n;i++) scanf("%d",&p[i].cont); qsort(p,n,sizeof(p[0]),cmp); memset(time,0,sizeof(time)); sum=0; for(i=0;i<n;i++) { for(j=p[i].t;j>=1;j--) { if(time[j]==0) { time[j]=1; break; } } if(j==0) sum+=p[i].cont; } printf("%d\n",sum); } return 0; }
文章结束给大家分享下程序员的一些笑话语录:
一条狗在街上闲逛,看见橱窗里一张告示:「招聘程序员。会编程,有团队精神,至少精通两种语言。均等机会。」
那条狗就进去申请,但是被拒绝了。
「我不能雇一条狗在公司里做事。」经理说。
狗不服气,指着告示上「均等机会」几字抗议。
经理没法,叹了口气,不屑地问道:「你会编程吗?」
那条狗默默地走到电脑前,编了个程序,运作准确。
「你有团队精神吗?」经理问。
那条狗掉头看了看门外,一大群野狗在外面虎视耽耽。
「我真的不能雇狗做这份工作。」经理气急败坏地说。
「就算会编程、有团队精神,但是我需要的雇员至少要能精通两种语言。」
那条狗抬头看着经理说:「喵-噢。」
--------------------------------- 原创文章 By 作业和最小 ---------------------------------