pku 1456 Supermarket
2010-05-20 18:55
225 查看
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; #define N 10005 struct Product { int profit; int deadline; bool operator < (const Product& rhs) const { return deadline < rhs.deadline; } }; int profit ; Product product ; int main() { int n; int i, j; while(scanf("%d", &n) != EOF) { int maxDeadline = -1; memset(profit, 0, sizeof(profit)); for(i = 0; i < n; ++i) { scanf("%d%d", &product[i].profit, &product[i].deadline); if(product[i].deadline > maxDeadline) maxDeadline = product[i].deadline; } sort(product, product+n); for (i = 0; i < n; ++i) { if(profit[product[i].deadline] == 0) profit[product[i].deadline] = product[i].profit; else { int value = product[i].profit; int minValue = INT_MAX; int minIndex = -1; for(j = 1; j <= product[i].deadline; ++j) { if(profit[j] == 0) { profit[j] = value; break; } if(profit[j] < minValue) { minValue = profit[j]; minIndex = j; } } if(j > product[i].deadline && value > profit[minIndex]) profit[minIndex] = value; } } int sum = 0; for(i = 1; i <= maxDeadline; ++i) sum += profit[i]; printf("%d/n", sum); } return 0; }
本题还可以用小顶堆优化, 将时间复杂度降到O(N*logN).
相关文章推荐
- pku 1456 Supermarket 贪心优先队列的应用 or 并查集
- pku1456 Supermarket
- pku1456 Supermarket
- pku 1456 Supermarket(并查集扩展)
- pku1456(Supermarket)
- PKU 1456 Supermarket
- Supermarket poj 1456
- POJ 1456 Supermarket
- poj 1456 Supermarket (贪心+并查集)
- POJ1456Supermarket(贪心+优先队列)
- POJ 1456 (贪心+并查集) Supermarket
- poj 动态规划DP - 1456 Supermarket
- G - Supermarket poj1456
- POJ-1456 Supermarket (贪心)
- Supermarket POJ - 1456------贪心加并查集
- POJ 1456 Supermarket
- POJ 1456 Supermarket
- poj 1456 Supermarket
- poj 1456 Supermarket(并查集维护区间)
- POJ1456 Supermarket简单贪心(无优化)题解