题目大意:n个物品,每个物品有一定的保质期d和一定的利润p,一天只能出售一个物品,问最大利润是多少?

题解:这是一个贪心的题目,有两种做法。

1 首先排序,从大到小排,然后每个物品,按保质期从后往前找,找到第一个没被占用的日期,然后出售。

code:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll N=1e4+;
struct stu{
ll a,b;
bool friend operator < (const stu &x,const stu &y){
if(x.a!=y.a) return x.a>y.a;
else return x.b>y.b;
}
}arr[N];
bool mark[N];
int main(){
ll n;
while(cin>>n){
for(ll i=;i<=n;i++){
scanf("%d%d",&arr[i].a,&arr[i].b);
}
memset(mark,,sizeof mark);
ll sum=;
sort(arr+,arr++n);
for(ll i=;i<=n;i++){
if(mark[arr[i].b]==) {
sum+=arr[i].a;
mark[arr[i].b]=;
}
else {
for(ll j=arr[i].b;j>=;j--){
if(!mark[j]){
sum+=arr[i].a;
mark[j]=;
break;
}
}
}
}
cout<<sum<<endl;
} return ;
}

2 用并查集来维护一下日期,如果说日期a被占用了,fa[a]=a-1,就是往前提上一天,

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll N=1e4+;
struct stu{
ll a,b;
bool friend operator < (const stu &x,const stu &y){
if(x.a!=y.a) return x.a>y.a;
else return x.b>y.b;
}
}arr[N];
ll fa[N];
ll find(ll x){
if(fa[x]==-) return x;
else return fa[x]=find(fa[x]);
}
int main(){
ll n;
while(cin>>n){
for(ll i=;i<=n;i++){
scanf("%lld%lld",&arr[i].a,&arr[i].b);
}
sort(arr+,arr++n);
memset(fa,-,sizeof fa);
ll sum=;
for(ll i=;i<=n;i++){
ll c=find(arr[i].b);
if(c>){
sum+=arr[i].a;
fa[c]=c-;
}
}
cout<<sum<<endl;
}
return ;
}

反思:这是完全是一个贪心的题目,并查集只是一种让他跑的更快的工具而已,可能是专项训练的缘故,思维被束缚了,不敢往贪心方向想....

最新文章

  1. 【.net 深呼吸】细说CodeDom(4):类型定义
  2. 如何输出function执行的语句
  3. [转] git fetch与pull
  4. shodan:黑客搜索引擎
  5. Docker数据管理
  6. 从零单排Linux – 1 – 简单命令
  7. form 和 ngModel
  8. Buffer Cache 原理
  9. mysql源码安装(5.1)
  10. js便利关联数组 及数组定义方式 分类
  11. 【转】javascript Object使用Array的方法
  12. Matlab自带常用的分类器,直接复制用就好了,很方面。
  13. Spring对远程服务的支持
  14. MonoBehaviour介绍(Unity3D开发之一)
  15. 固件远程更新之STARTUPE2原语(fpga控制flash)
  16. 微信小程序 image属性 mode
  17. shp2pgsql向postgresql导入shape数据
  18. 【BZOJ5289】[HNOI2018]排列(贪心)
  19. 【Linux】CentOs的常用命令
  20. (转)Putty server refused our key的三种原因和解决方法

热门文章

  1. python之面向对象三大特性: 继承(单继承)
  2. 怎样设计最优的卷积神经网络架构?| NAS原理剖析
  3. Thread Future模式
  4. iOS 图片加载速度优化
  5. (25+4/25+4)复健-KMP/EKMP/manache/Trie
  6. Spring Boot 整合视图层技术,application全局配置文件
  7. (3)SQL Server表分区
  8. 关于C#三层架构增删改查中的“查询”问题
  9. 1019 General Palindromic Number (20 分)
  10. PTA数据结构与算法题目集(中文) 7-35 城市间紧急救援 (25 分)