POJ_1456 Supermarket 【并查集/贪心】
一、题面
二、分析
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 【并查集/贪心】的更多相关文章
- poj 1456 Supermarket - 并查集 - 贪心
题目传送门 传送点I 传送点II 题目大意 有$n$个商品可以销售.每个商品销售会获得一个利润,但也有一个时间限制.每个商品需要1天的时间销售,一天也只能销售一件商品.问最大获利. 考虑将出售每个物品 ...
- HDU 1598 find the most comfortable road 并查集+贪心
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1598 find the most comfortable road Time Limit: 1000 ...
- [POJ2054]Color a Tree (并查集+贪心)
POJ终于修好啦 题意 和UVA1205是同一题,在洛谷上是紫题 有一棵树,需要给其所有节点染色,每个点染色所需的时间是一样的都是11.给每个点染色,还有一个开销“当前时间×ci×ci”,cici是每 ...
- POJ 1456 Supermarket 区间问题并查集||贪心
F - Supermarket Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Sub ...
- POJ1456:Supermarket(并查集+贪心)
Supermarket Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17634 Accepted: 7920 题目链接 ...
- 利用并查集+贪心解决 Hdu1232
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 2480 Steal the Treasure (并查集+贪心)
题意:给你n个点,m条边,包括有向边与无向边,每条边都有一个权值.在每个点上都有一个人,他可以走与这个点直接相连的所有边中任意一条边一次,并且得到这个权值,就不能走了,注意这条路也只能被一个人走.问最 ...
- POJ1456:Supermarket(并查集版)
浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html 题目传送门:http://poj.org/problem?id=1456 堆作法:https:/ ...
- UVA 1664 Conquer a New Region (并查集+贪心)
并查集的一道比较考想法的题 题意:给你n个点,接着给你n-1条边形成一颗生成树,每条边都有一个权值.求的是以一个点作为特殊点,并求出从此点出发到其他每个点的条件边权的总和最大,条件边权就是:起点到终点 ...
随机推荐
- Loadrunner Analyze
Analysis 对controller运行的结果进行分析 1.首先必须明确:光靠Analysis是不行的,只要能通过Analysis分析出部分问题就已经很不错了, 善于利用它才是最关键的. 2.如何 ...
- 几个常用的HTTP状态码
200:客户端请求成功 302:临时跳转,跳转的地址通过Location指定 400:客户端请求有语法错误,不能被服务器识别 403:服务器收到请求,但是拒绝提供服务 404:请求的资源不存在 500 ...
- laravel的orm增删改查
增: //通过模型新增 //使用模型的create方法新增数据 删: //通过模型删除 //通过主键删除 改: //通过模型更新数据库 //结合查询语句批量更新 查:
- HDU 3368 Reversi (暴力,DFS)
题意:给定一个8*8的棋盘,然后要懂黑白棋,现在是黑棋走了,问你放一个黑子,最多能翻白子多少个. 析:我是这么想的,反正才是8*8的棋盘,那么就暴吧,反正不会超时,把每一个格能暴力的都暴力,无非是上, ...
- Graph cut使用方法
下载:http://www.wisdom.weizmann.ac.il/~bagon/matlab.html 1. 运行compile_gc.m 2.运行gc_example.m(必须同目录吗?!) ...
- 【转】Android Android属性动画深入分析
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17841165 开篇 像设计模式一样,我们也提出一个问题来引出我们的内容. 问 ...
- Sqlserver风格规范
常见的字段类型选择 1.字符类型建议采用varchar/nvarchar数据类型 2.金额货币建议采用money数据类型 3.科学计数建议采用numeric数据类型 4.自增长标识建议采用bigint ...
- 「BZOJ1000」A+B Problem
写这个主要是为了凑\(BZOJ\)题解用的,不用在意.跳过即可 \(Code\) #include<bits/stdc++.h> using namespace std; int main ...
- ASPxGridView编辑时弹出的editform值不是当前行值的原因
如下图所示(左边是红框是ASPxGridView编辑的行,右边是弹出的editform上显示的值). 这是因为ASPxGridView的KeyFieldName的值不是唯一的,需要修改或增加条件使键值 ...
- 【bzoj4036】[HAOI2015]按位或 fmt+期望
Description 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal 的or)操作.选择数字i的概率是p[i].保证0&l ...