Supermarket---poj456(贪心并查集优化)
题目链接:http://poj.org/problem?id=1456
题意是现有n个物品,每个物品有一个保质期和一个利润,现在每天只能卖一个商品,问最大的利润是多少,商品如果过期了就不能卖了;
暴力的方法:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stack>
#include <queue>
#include <map>
#include <vector>
using namespace std;
typedef long long LL;
#define PI 4*atan(1.0)
#define N 10550
#define met(a, b) memset(a, b, sizeof(a)) struct node
{
int p, d;
}a[N];
int cmp(node p, node q)
{
if(p.p != q.p)
return p.p > q.p;
return p.d > q.d;
}
int vis[N]; int main()
{
int n;
while(scanf("%d", &n)!=EOF)
{
met(vis, );
met(a, ); for(int i=; i<=n; i++)
scanf("%d %d", &a[i].p, &a[i].d); sort(a+, a+n+, cmp); int ans = ;
for(int i=; i<=n; i++)
{
for(int j=a[i].d; j>=; j--)
{
if(!vis[j])
{
ans+=a[i].p;
vis[j] = ;
break;
}
}
}
printf("%d\n", ans);
}
return ;
}
并查集优化:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stack>
#include <queue>
#include <map>
#include <vector>
using namespace std;
typedef long long LL;
#define PI 4*atan(1.0)
#define N 10500
#define met(a, b) memset(a, b, sizeof(a)) struct node
{
int p, d;
}a[N];
int cmp(node p, node q)
{
if(p.p != q.p)
return p.p > q.p;
return p.d > q.d;
} int f[N];
int Find(int x)
{
if(f[x]!=x)
f[x] = Find(f[x]);
return f[x];
} int main()
{
int n;
while(scanf("%d", &n)!=EOF)
{
for(int i=; i<N; i++)
f[i] = i;
met(a, ); for(int i=; i<=n; i++)
scanf("%d %d", &a[i].p, &a[i].d); sort(a+, a+n+, cmp); int ans = ;
for(int i=; i<=n; i++)
{
int t = Find(a[i].d);
if(t > )
{
ans += a[i].p;
f[t] = t-;
}
}
printf("%d\n", ans);
}
return ;
}
Supermarket---poj456(贪心并查集优化)的更多相关文章
- POJ 1456——Supermarket——————【贪心+并查集优化】
Supermarket Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- POJ 1456 Supermarket(贪心+并查集优化)
一开始思路弄错了,刚开始想的时候误把所有截止时间为2的不一定一定要在2的时候买,而是可以在1的时候买. 举个例子: 50 2 10 1 20 2 10 1 50+20 50 2 40 ...
- POJ 1456 Supermarket(贪心+并查集)
题目链接:http://poj.org/problem?id=1456 题目大意:有n件商品,每件商品都有它的价值和截止售卖日期(超过这个日期就不能再卖了).卖一件商品消耗一个单位时间,售卖顺序是可以 ...
- Supermarket(贪心/并查集)
题目链接 原创的博客 题意: 超市里有N个商品. 第i个商品必须在保质期(第di天)之前卖掉, 若卖掉可让超市获得pi的利润. 每天只能卖一个商品. 现在你要让超市获得最大的利润. n , p[i], ...
- POJ-1456 Supermarket(贪心,并查集优化)
Supermarket Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10725 Accepted: 4688 Descript ...
- POJ 1456 (贪心+并查集) Supermarket
有n件商品,每件商品有它的利润和售出的最后期限,问能够得到的最大利润是多少 这道题和 HDU 1789 Doing Homework again 几乎一模一样,只不过这个是求最的扣分,本题是求最大利润 ...
- 数据结构作业——ギリギリ eye(贪心+优先队列/贪心+并查集)
ギリギリ eye Description A.D.1999,由坠落地球的“谜之战舰”带来的 Over Technology,揭示了人类历史和远古文明之间的丝丝联系, 促使人类终止彼此间的战争,一方面面 ...
- hdu 4641 K-string SAM的O(n^2)算法 以及 SAM+并查集优化
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4641 题意:有一个长度为n(n < 5e4)的字符串,Q(Q<=2e5)次操作:操作分为:在末 ...
- 洛谷 3295 [SCOI2016]萌萌哒——并查集优化连边
题目:https://www.luogu.org/problemnew/show/P3295 当要连的边形如 “一段区间内都是 i 向 i+L 连边” 的时候,用并查集优化连边. 在连边的时候,如果要 ...
随机推荐
- Java调用FTP实例
package com.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStre ...
- ImportError: No module named Crypto.Cipher
from Crypto.Cipher import AES 报错: ImportError: No module named Crypto.Cipher 解决方法: pip install pycry ...
- jQuery-理解选择结果
使用$函数选择元素返回的是一个对象,可以称这个对象为jQuery对象,在jQuery执行一些操作的时候很多情况下都是返回的jQuery对象. jQuery中常用处理结果集的方法和属性 表达式 例子 说 ...
- 【Latex】数学公式排版
http://www.cnblogs.com/houkai/p/3399646.html 常用latex数学符号表 https://zh.wikipedia.org/wiki/Help:%E6%95% ...
- 【Mysql】修改最大连接数
http://www.111cn.net/database/mysql/51934.htm
- vs2013配置opencv3.2.0
工具/原料 l VS2013 l OpenCV3.20http://jaist.dl.sourceforge.net/project/opencvlibrary/opencv-win/3.2.0/op ...
- dedecms的arclist循环中判断第一个li添加css,否则不加
dedecms的arclist循环中,判断如果是第一个li,则添加固定的css,否则不加 写法如下: {dede:arclist row=4 flag='p'} <li [field:glo ...
- 验证码显示不出来,在THINKPHP中的使用
未开启 php_gd2设置 php的配置文件php.ini,搜索extension=php_gd2.dll,去掉前面的分号即可: 1.在模块类中增加一个 verify 方法来用于显示验证码Public ...
- 面向对象----构造方法、this 关键字、函数的参数传递、package语句/import语句
构造方法 构造器的定义.作用 构造方法的特征 它具有与类相同的名称:它不含返回值: 注意:在构造方法里不含返回值的概念是不同于“void”的,在定义构造方法时加了“void”,结果这个方法就不再被自动 ...
- Template类的使用指南【python】
转自:http://www.jb51.net/article/55011.htm