首页 > 代码库 > hdu 4864 Task
hdu 4864 Task
http://acm.hdu.edu.cn/showproblem.php?pid=4864
对机器和任务先按时间从大到小排序,时间相同再水平。先选任务找到最小的符合的机器贪心处理就行。
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define maxn 200000 5 using namespace std; 6 7 struct node 8 { 9 int ti,le;10 bool operator <(const node &a)const11 {12 return (ti>a.ti)||(a.ti==ti&&le>a.le);13 }14 }m[maxn],t[maxn];15 16 int n,m1;17 int c[maxn];18 19 int main()20 {21 while(scanf("%d%d",&n,&m1)!=EOF)22 {23 memset(c,0,sizeof(c));24 for(int i=0; i<n; i++)25 {26 scanf("%d%d",&m[i].ti,&m[i].le);27 }28 for(int i=0; i<m1; i++)29 {30 scanf("%d%d",&t[i].ti,&t[i].le);31 }32 sort(m,m+n);33 sort(t,t+m1);34 __int64 sum=0;35 int j=0;36 int ans=0;37 for(int i=0; i<m1; i++)38 {39 while(j<n&&m[j].ti>=t[i].ti)40 {41 c[m[j].le]++;42 j++;43 }44 for(int k=t[i].le; k<=200; k++)45 {46 if(c[k])47 {48 c[k]--;49 ans++;50 sum+=(500*t[i].ti+2*t[i].le);51 break;52 }53 }54 }55 printf("%d %I64d\n",ans,sum);56 }57 return 0;58 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。