考试时,想到了一个很类似的方法,但是总是差那么点,就是这么点,需要不断的努力啊!!!

题解:

基本思想是贪心。

对于价值c=500*xi+2*yi,yi最大影响100*2<500,所以就是求xi总和最大。可以先对机器和任务的时间从大到小排序。从最大时间的任务开始,找出满足任务时间要求的所有机器,从中找出等级最低且满足任务等级要求的机器匹配。依次对任务寻找满足要求的机器。

这几乎是把标程复制了一遍,因为其中的STL用的实在巧妙而且准确,自己写的话确实搞不出来。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
typedef long long LL;
struct Task
{
int time;
int level;
};
Task task[],machine[];
bool cmp(Task a,Task b){
if(a.time==b.time) return(a.level>b.level);
else return(a.time>b.time);
}
int main()
{
int n,m;
while(scanf("%d%d", &n,&m)!=EOF)
{
for(int i=;i<n;i++)
scanf("%d%d",&machine[i].time,&machine[i].level);
for(int i=;i<m;i++)
scanf("%d%d",&task[i].time,&task[i].level);
sort(machine,machine+n,cmp);
sort(task,task+m,cmp);
int j=,count=;LL ans=;
map<int,int> le;
for(int i=;i<m;i++){
while(j<n&&task[i].time<=machine[j].time){
le[machine[j].level]++;
j++;
}
map<int,int>::iterator it=le.lower_bound(task[i].level);
if(it!=le.end()){
count++;
ans+=task[i].time*+task[i].level*;
int t=it->first;
le[t]--;
if(le[t]==) le.erase(t);
}
}
printf("%d %I64d\n",count,ans);
}
return ;
}

刚才发现大神博客题解上可以不用STL ,直接扫一遍就行了,自己还是太弱了。

转:http://blog.csdn.net/a601025382s/article/details/38046927

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; #define LL __int64
const int maxn=1e5+;
struct node{
int x,y;
}e[maxn],f[maxn];
int c[];
int cmp(node a,node b)
{
if(a.x==b.x)return a.y>b.y;
return a.x>b.x;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
int i,j,k,num=;
LL ans=;
for(i=;i<n;i++)
scanf("%d%d",&e[i].x,&e[i].y);
for(i=;i<m;i++)
scanf("%d%d",&f[i].x,&f[i].y);
sort(e,e+n,cmp);
sort(f,f+m,cmp);
memset(c,,sizeof(c));
for(i=,j=;i<m;i++)
{
while(j<n&&e[j].x>=f[i].x)
{
c[e[j].y]++;
j++;
}
for(k=f[i].y;k<=;k++)
{
if(c[k])
{
num++;
c[k]--;
ans=ans+*f[i].x+*f[i].y;
break;
}
}
}
printf("%d %I64d\n",num,ans);
}
return ;
}

HDU 4864 (2014 Multi-University Training Contest 1 )的更多相关文章

  1. hdu 4915 Parenthese sequence--2014 Multi-University Training Contest 5

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4915 Parenthese sequence Time Limit: 2000/1000 MS (Ja ...

  2. hdu 4902 Nice boat--2014 Multi-University Training Contest 4

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=4902 Nice boat Time Limit: 30000/15000 MS (Java/Othe ...

  3. hdu 4925 Apple Tree--2014 Multi-University Training Contest 6

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4925 Apple Tree Time Limit: 2000/1000 MS (Java/Others ...

  4. HDU校赛 | 2019 Multi-University Training Contest 6

    2019 Multi-University Training Contest 6 http://acm.hdu.edu.cn/contests/contest_show.php?cid=853 100 ...

  5. HDU校赛 | 2019 Multi-University Training Contest 5

    2019 Multi-University Training Contest 5 http://acm.hdu.edu.cn/contests/contest_show.php?cid=852 100 ...

  6. HDU校赛 | 2019 Multi-University Training Contest 4

    2019 Multi-University Training Contest 4 http://acm.hdu.edu.cn/contests/contest_show.php?cid=851 100 ...

  7. HDU校赛 | 2019 Multi-University Training Contest 3

    2019 Multi-University Training Contest 3 http://acm.hdu.edu.cn/contests/contest_show.php?cid=850 100 ...

  8. HDU校赛 | 2019 Multi-University Training Contest 2

    2019 Multi-University Training Contest 2 http://acm.hdu.edu.cn/contests/contest_show.php?cid=849 100 ...

  9. HDU校赛 | 2019 Multi-University Training Contest 1

    2019 Multi-University Training Contest 1 http://acm.hdu.edu.cn/contests/contest_show.php?cid=848 100 ...

  10. HDU 6102 - GCDispower | 2017 Multi-University Training Contest 6

    个人感觉题解的复杂度很玄,参不透,有没有大佬讲解一下- - /* HDU 6102 - GCDispower [ 数论,树状数组] | 2017 Multi-University Training C ...

随机推荐

  1. 环信ipv6适配

    环信2.2.5及之后版本才适配了ipv6.可以自己搭配个ipv6环境,在ipv6环境下2.2.5以下版本无法登录.把整个sdk换成2.2.5版本项目需要改动的地方实在太多. 那么就部分换一下,适配ip ...

  2. c语言编程之循环队列

    利用链表实现的循环队列,完成了队列的入队和出队,对于队空和队满用了一个flag进行标记.入队flag++,出队flag-- #include"stdio.h" typedef in ...

  3. android开发 PopupWindow 设置充满屏幕

    View qrcode_view = this.getLayoutInflater().inflate(R.layout.taskdetail_qrcode,null); final PopupWin ...

  4. PHP 中的BOM BUG

    对于PHP,一个小小让我不敢置信的事情很多,包括引用变量哪么迟钝,普通变量哪么牛B我己经很意外,甚至现在竟然出现了BOM头的BUG. 在PHP中,会引用很多小文件,include或require,哪么 ...

  5. c++ 常用数据接口 set

    #include <set> #include <iostream> #include <string> int main(void) { std::set< ...

  6. java poi导出EXCEL xls文件代码

    String _currentPage = request.getParameter("currentPage"); Integer currentPage = 0; if(_cu ...

  7. linux源代码阅读笔记 fork和execve的区别

    1. man exec就可以知到: The exec() family of functions replaces the current process image with a new proce ...

  8. XML 实体扩展攻击

    XMl Entity Expansion(攻击)某种程度上类似于 XML Entity Expansion,但是它主要试图通过消耗目标程序的服务器环境来进行DOS攻击的.这种攻击基于XML Entit ...

  9. Spring @ Component 的作用

    1.@controller 控制器(注入服务) 2.@service 服务(注入dao) 3.@repository dao(实现dao访问) 4.@component (把普通pojo实例化到spr ...

  10. POJ1258Agri-Net

    http://poj.org/problem?id=1258 题意 : john当上了镇长,打算给每个农场都连接网络,需要用最小的成本连接其他所有农场,所以要找最少的纤维连在一起,任何两个农场之间的距 ...