http://poj.org/problem?id=1456

题意:给你 N 件不同的商品,每件商品最多可以买一次。每件物品对应两个值 pi di

pi 表示物品的价值,di 表示可以买的最迟时间(也就是第一天到第 di 天都可以买这件物品)

规定:每天最多可以买一件物品,问你可以得到的最大价值。

思路【贪心版本】:将物品按照价值从大到小排序

​ 依次枚举每件物品

​ 从可以买的最后一天枚举,看是否可以买

注意:标记天数。

思路KB的并查集版本】:将物品按照价值从大到小排序

​ 处理的时候选择最后的一个不冲突点。

​ 用并查集实现链表的作用,快速找到不冲突点。

贪心版本

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1e4 + 10;
int n;
bool book[maxn];
struct Node {
int p, d;
}node[maxn];
bool cmp(Node a, Node b) {
return a.p > b.p;//按价值排序
}
int main() {
//freopen("in.txt", "r", stdin);
ios::sync_with_stdio(false), cin.tie(0);
while (cin >> n) {
memset(book, false, sizeof book);
for (int i = 1; i <= n; ++i)cin >> node[i].p >> node[i].d;
int ans = 0; sort(node + 1, node + 1 + n,cmp);
for (int i = 1; i <= n; ++i) {
for (int j = node[i].d; j >= 1; j--) {
if (!book[j]) {
ans += node[i].p;
book[j] = 1; break;
}
}
}
cout << ans << endl;
}
}

并查集版本

/*
POJ 1456
贪心处理。
按照获利p从大到小排序。
处理的时候选择最后的一个不冲突点。
用并查集实现链表的作用,快速找到不冲突点
*/
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1e4 + 10;
int f[maxn];
struct Node {
int p, d;
}node[maxn];
int cmp(Node a, Node b) {
return a.p > b.p;
}
int find(int x) {
if (f[x] == -1)return x;
return f[x] = find(f[x]);
} int main() {
//freopen("in.txt", "r", stdin);
ios::sync_with_stdio(false), cin.tie(0);
int n; while (cin >> n) {
memset(f, -1, sizeof f);
for (int i = 0; i < n; ++i)
cin >> node[i].p >> node[i].d;
sort(node , node + n,cmp);
int ans = 0;
for (int i = 0; i < n; ++i) {
int t = find(node[i].d);
if (t > 0) {
ans += node[i].p;
f[t] = t - 1;
}
}
cout << ans << endl;
}
}

POJ 1456 Supermarket【贪心 + 并查集】的更多相关文章

  1. POJ 1456 Supermarket(贪心+并查集优化)

    一开始思路弄错了,刚开始想的时候误把所有截止时间为2的不一定一定要在2的时候买,而是可以在1的时候买. 举个例子: 50 2  10 1   20 2   10 1    50+20 50 2  40 ...

  2. poj1456 Supermarket 贪心+并查集

    题目链接:http://poj.org/problem?id=1456 题意:有n个物品(0 <= n <= 10000) ,每个物品有一个价格pi和一个保质期di (1 <= pi ...

  3. POJ 1456 - Supermarket - [贪心+小顶堆]

    题目链接:http://poj.org/problem?id=1456 Time Limit: 2000MS Memory Limit: 65536K Description A supermarke ...

  4. nyoj 208 + poj 1456 Supermarket (贪心)

    Supermarket 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 A supermarket has a set Prod of products on sal ...

  5. POJ 1456 Supermarket(贪心+并查集)

    题目链接:http://poj.org/problem?id=1456 题目大意:有n件商品,每件商品都有它的价值和截止售卖日期(超过这个日期就不能再卖了).卖一件商品消耗一个单位时间,售卖顺序是可以 ...

  6. POJ_1456 Supermarket 【并查集/贪心】

    一.题面 POJ1456 二.分析 1.贪心策略:先保证从利润最大的开始判断,然后开一个标记时间是否能访问的数组,时间尽量从最大的时间开始选择,这样能够保证后面时间小的还能够卖. 2.并查集:并查集直 ...

  7. POJ 1456 Supermarket 区间问题并查集||贪心

    F - Supermarket Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Sub ...

  8. POJ 1456——Supermarket——————【贪心+并查集优化】

    Supermarket Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit  ...

  9. poj 1456 Supermarket - 并查集 - 贪心

    题目传送门 传送点I 传送点II 题目大意 有$n$个商品可以销售.每个商品销售会获得一个利润,但也有一个时间限制.每个商品需要1天的时间销售,一天也只能销售一件商品.问最大获利. 考虑将出售每个物品 ...

  10. POJ 1456 (贪心+并查集) Supermarket

    有n件商品,每件商品有它的利润和售出的最后期限,问能够得到的最大利润是多少 这道题和 HDU 1789 Doing Homework again 几乎一模一样,只不过这个是求最的扣分,本题是求最大利润 ...

随机推荐

  1. python之继承的方法重写

    目录 普通方法 方法重写super().xxx() 我们在python之继承及其实现方法中已经学会了打印子类在父类继承的属性 那么我们怎么打印出子类中特有的属性呢 普通方法 我们当然可以在子类中添加新 ...

  2. 京东广告研发近期入选国际顶会文章系列导读——CIKM 2023篇

    近年来,放眼业界广告推荐领域的算法获得了长足的发展,从几篇奠定基础的序列学习.大规模图学习.在线学习&增强学习.多模态推荐问题等起步,业内算法不断迭代发展并在学术和工业场景上取得不错的应用. ...

  3. Mongoose查增改删

    在src目录下新建一个文件夹models,用来存放数据模型和操作数据库的方法. 在models目录下新建一个文件user.js,用来管理用户信息相关的数据库操作. 相关的数据模型和数据库操作方法,最后 ...

  4. .NET Conf 2023 Chengdu - 成都会场即将到来!

    12月9日 天府之国 不见不散 今年的.NET Conf 2023,中国区首次有两个会场举办Local Event,北京会场12月16日,成都会场12月9日.这是所有中国.NET开发者的节日,成都会场 ...

  5. SpringCore完整学习教程4,入门级别

    本章从第4章开始 4. Logging Spring Boot使用Commons Logging进行所有内部日志记录,但保留底层日志实现开放.为Java Util Logging.Log4J2和Log ...

  6. Android Studio 学习-第三章 Activity 第一组

    事先申明:所有android 类型的学习记录全部基于<第一行代码 Android>第三版,在此感谢郭霖老师的书籍帮助. 1.手动创建Activity 在Project类型目录中寻找到 项目 ...

  7. Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same(解决)

    问题描述 在使用pytorch训练经典的MNIST数据集时,运行时,出现了以下的问题: Input type (torch.FloatTensor) and weight type (torch.cu ...

  8. Kernel Memory 入门系列:Kernel Memory Service

    Kernel Memory 入门系列:Kernel Memory Service 在 Kernel Memory 的 GitHub 仓库中有一个单独的项目 Service , 用于提供独立的Kerne ...

  9. Linux卸载与安装JDK

    安装 一.yum安装JDK 1.查看可安装的Java版本 yum -y list java* 2.选择一个自己要安装的版本 我安装的是java-11-openjdk.x86_64 sudo yum i ...

  10. 递归产生StackOverflowError

    package com.guoba.digui; public class Demo01 { public void A(){ A();//自己调用自己,递归没用好,产生错误java.lang.Sta ...