标签:struct clu word iss family 题意 wan cts hit
题链:http://acm.hdu.edu.cn/showproblem.php?pid=1789
3 3 3 3 3 10 5 1 3 1 3 1 6 2 3 7 1 4 6 4 2 4 3 3 2 1 7 6 5 4
0 3 5
题意:有n个任务,第一排是任务完毕的最后时刻,第二排是任务不在指定时刻完毕所受到的惩处。
做法:优先要做分高的,然后每一个任务找离自己近期的时间。且没有被占领的时间点去完毕这任务。假设在截止时间前已经没有空暇时间,就是不能完毕了。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <limits.h> #include <malloc.h> #include <ctype.h> #include <math.h> #include <string> #include <iostream> #include <algorithm> using namespace std; #include <stack> #include <queue> #include <vector> #include <deque> #include <set> #include <map> struct work { int d,s; }; work wo[1010]; int cmp(work a,work b) { //if(a.s!=b.s) return a.s>b.s; // return a.d>b.d; } map<int,bool>my; int main() { int n; int t; scanf("%d",&t); while(t--) { scanf("%d",&n); my.clear(); for(int i=0;i<n;i++) scanf("%d",&wo[i].d); for(int i=0;i<n;i++) scanf("%d",&wo[i].s); int ans=0; sort(wo,wo+n,cmp); for(int i=0;i<n;i++) { while(1) { if(my.count(wo[i].d)==0) { my[wo[i].d]=1; break; } wo[i].d--; if(wo[i].d==0) { ans+=wo[i].s; break; } } } printf("%d\n",ans); } return 0; }
hdu 1789 Doing Homework again 贪心
标签:struct clu word iss family 题意 wan cts hit
原文地址:http://www.cnblogs.com/yfceshi/p/7267477.html