【平衡二叉樹】超市促銷
来源:互联网 发布:mac客人用户关闭不了 编辑:程序博客网 时间:2024/06/10 12:02
题目描述球球和小姜管理着巨大的校园超市联盟,听说今年将有很多OIer到学校来参加NOIP,他俩决定在NOIP期间(包括准备期间)举行促销活动。促销活动必须遵守下列规定:想要参加促销的每位OIer,必须将自己的每笔消费账单丟入指定的盒子里。每天活动结束时,球球和小姜会从盒子里挑出金额最大和最小的两张账单。消费最多的客户将要得到一笔奖金! 数额是挑出的两张金额的差的绝对值。输入数据保证每天总可以找到两张账单。为了避免重复获奖,每天挑出的账单不能重新放回盒子里,其余的账单将留在盒中,继续参加促销活动,直到活动结束。在紧张的复习NOIP阶段,球球和小姜实在没有精力来计算促销活动的花费,他们找到了聪明的你,你的任务是根据每天活动的信息算出促销活动的总花费。输入格式输入的第一行是一个整数n,表示促销的天数。(1 <= n <= 5000)在接下来的n行中,每行有若干个非负整数,用空格隔开。第i+1行的数据代表第i天的账单信息,每行第一个整数k(0 <= k <= 10^5)。表示今天有多少个新账单。接下来k个正整数表示每张账单的金额wij(1 <= wij <= 10^6)输出格式输出中只有一个整数,表示整个促销活动期间所有的花费。样例输入53 1 2 32 1 14 10 5 5 101 2样例输出19
平衡二叉樹做法:用STL的multiset做會很簡單。
Accode:
#include <cstdio>#include <cstring>#include <cstdlib>#include <set>using std::multiset;const char fi[] = "rqnoj572.in";const char fo[] = "rqnoj572.out";const int maxN = 5010;multiset <int> task;int n, ans; void init_file() { freopen(fi, "r", stdin); freopen(fo, "w", stdout); } void work() { scanf("%d", &n); ans = 0; for (int i = 0; i < n; ++i) { int t; scanf("%d", &t); for (; t; --t) { int x; scanf("%d", &x); task.insert(x); } int Min = *task.begin(); task.erase(task.begin()); int Max = *task.rbegin(); ans += Max - Min; task.erase(task.find(Max)); } if (ans != 2) printf("%d", ans); else printf("\n"); }int main(){ init_file(); work(); exit(0);}
- 【平衡二叉樹】超市促銷
- 【平衡二叉树】超市促销
- 【平衡二叉树】超市促销
- 【平衡二叉樹】【NOI2004】郁闷的出纳员
- 平衡二叉树平衡法则
- 二叉树--二叉平衡树
- 超市
- 超市
- 超市
- 平衡二叉树的
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉查找树
- 平衡二叉树 详解
- 平衡二叉树
- 平衡二叉树
- 第九章中位数和顺序统计学之“查找第i小的元素(迭代版)平均运行时间为O(n)算法”(练习9.2-3)
- 链接网址
- VS命令行运行程序
- Merlin brings nonblocking I/O to the Java platform
- RSOSFIELDMAP表
- 【平衡二叉樹】超市促銷
- 【floyd+拆点+二分答案+网络流】POJ 2391
- AODV路由选择
- 关于servletConfig和servletContext
- 让百度秒收博文的方法
- 0/1背包问题--Dynamic Programming
- 动态链接库、静态库区别 ,VS2005项目相关设置
- Firefox扩展SDK开发人员指南(七)-两种类型的脚本
- Oracle Package