一、题面

POJ1456

二、分析

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

2.并查集:并查集直接加快了判断该时间能否卖的速度,贪心原理相同。

三、AC代码

 //贪心
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
#include <algorithm>
#include <fstream> using namespace std; const int MAXN = 1e4+;
struct Node
{
int px, dx;
bool operator<(const Node t)const
{
return px > t.px;
}
}Data[MAXN];
bool flag[MAXN]; int main()
{
//freopen("input.txt", "r", stdin);
int N, Ans;
while(scanf("%d", &N)!=EOF)
{
Ans = ;
for(int i = ; i < N; i++)
scanf("%d %d", &Data[i].px, &Data[i].dx);
sort(Data, Data+N);
memset(flag, , sizeof(flag));
for(int i = ; i < N; i++)
{
for(int j = Data[i].dx; j >= ; j--)
{
if(!flag[j])
{
Ans += Data[i].px;
flag[j] = ;
break;
}
}
}
printf("%d\n", Ans);
}
return ;
}

贪心

 //并查集加速
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
#include <algorithm>
#include <fstream> using namespace std; const int MAXN = 1e4+;
struct Node
{
int px, dx;
bool operator<(const Node t)const
{
return px > t.px;
}
}Data[MAXN];
bool flag[MAXN];
int par[MAXN]; int Find(int x)
{
if(par[x] == -)
return x;
return par[x] = Find(par[x]);
} int main()
{
//freopen("input.txt", "r", stdin);
int N, Ans;
while(scanf("%d", &N)!=EOF)
{
Ans = ;
for(int i = ; i < N; i++)
scanf("%d %d", &Data[i].px, &Data[i].dx);
sort(Data, Data+N);
memset(flag, , sizeof(flag));
memset(par, -, sizeof(par));
for(int i = ; i < N; i++)
{
int f = Find(Data[i].dx); //判断该时间以下是否有时间可以卖
if(f > )
{
Ans += Data[i].px;
par[f] = f-;
}
}
printf("%d\n", Ans);
}
return ;
}

并查集

POJ_1456 Supermarket 【并查集/贪心】的更多相关文章

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

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

  2. HDU 1598 find the most comfortable road 并查集+贪心

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1598 find the most comfortable road Time Limit: 1000 ...

  3. [POJ2054]Color a Tree (并查集+贪心)

    POJ终于修好啦 题意 和UVA1205是同一题,在洛谷上是紫题 有一棵树,需要给其所有节点染色,每个点染色所需的时间是一样的都是11.给每个点染色,还有一个开销“当前时间×ci×ci”,cici是每 ...

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

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

  5. POJ1456:Supermarket(并查集+贪心)

    Supermarket Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17634   Accepted: 7920 题目链接 ...

  6. 利用并查集+贪心解决 Hdu1232

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. HDU 2480 Steal the Treasure (并查集+贪心)

    题意:给你n个点,m条边,包括有向边与无向边,每条边都有一个权值.在每个点上都有一个人,他可以走与这个点直接相连的所有边中任意一条边一次,并且得到这个权值,就不能走了,注意这条路也只能被一个人走.问最 ...

  8. POJ1456:Supermarket(并查集版)

    浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html 题目传送门:http://poj.org/problem?id=1456 堆作法:https:/ ...

  9. UVA 1664 Conquer a New Region (并查集+贪心)

    并查集的一道比较考想法的题 题意:给你n个点,接着给你n-1条边形成一颗生成树,每条边都有一个权值.求的是以一个点作为特殊点,并求出从此点出发到其他每个点的条件边权的总和最大,条件边权就是:起点到终点 ...

随机推荐

  1. jsoup 的简单应用

    导入相关jar包 package jsoup.zr.com.utils; import java.io.IOException; import java.util.List; import org.j ...

  2. css 样式文字溢出显示省略号

    在table中使用溢出样式,table样式要设置为”table-layout: fixed“,即<table style="table-layout: fixed;"> ...

  3. JMS-消息中间件的应用01-基本概念-来自慕课学习-新手学习

    什么是JMS? Java消息服务(Java Message Service),即JMS,是一个java平台中关于面向消息中间件的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信. ...

  4. Oracle sql语句执行顺序(转)

    from: http://blog.csdn.net/lailai186/article/details/12612263 sql语法的分析是从右到左 一.sql语句的执行步骤:1)语法分析,分析语句 ...

  5. WEB缓存初探

    WEB缓存初探 概念理解 缓存--缓存就是数据交换的缓冲区(称作Cache) 缓存 的作用说白了就是用来就近获取东西,比如我们会把已经拿到的常用的东西放在手边(与自己相对较近的地方),方便下次需要时去 ...

  6. 微信运动数据抓取(PHP)

    “微信运动”能够向朋友分享一个包含有运动数据的网页,网页中就有我们需要的数据.url类似于:http://hw.weixin.qq.com/steprank/step/personal?openid= ...

  7. Go语言最佳实践——通道和并发

    何时关闭通道: 第一,只有在后面要检查通道是否关闭的时候才需要显式地关闭通道: 第二,应该由发送端的goroutine关闭通道,而不是由接收端的goroutine来完成: 第三,如果通道并不需要检查是 ...

  8. Xshell显示本地数据排版错乱

    解决办法 文件 - 属性 - 终端 - 高级 - 用CR-LF接受LF(R)

  9. 百度云BDCloudVideoView播放器的初体验

    今天试用了一下百度云BDCloudVideoView,记录下遇到的坑. 前面一切还好,按照他的要求各种导入,然后开始码代码,起实就是抄例子.然后各种坑开始了 下面这个你看名称能知道它是个啥吗? mVi ...

  10. hbuilder h5 原生socket

    在网上搜索了很多资料都不行,要么就是不能发送数据,要么就不能接收数据,使用如下的方法可以接收数据,一个一个字节接收: 有部分限制是需要明确知道要接收多少个字节,否则容易出现接收异常.. var tes ...