题目:超市促销

题目描述

球球和小姜管理着巨大的校园超市联盟,听说今年将有很多OIer到学校来参加NOIP,他俩决定在NOIP期间(包括准备期间)举行促销活动。
促销活动必须遵守下列规定:
想要参加促销的每位OIer,必须将自己的每笔消费账单丟入指定的盒子里。每天活动结束时,球球和小姜会从盒子里挑出金额最大和最小的两张账单。消费最多的客户将要得到一笔奖金! 数额是挑出的两张金额的差的绝对值。输入数据保证每天总可以找到两张账单。
为了避免重复获奖,每天挑出的账单不能重新放回盒子里,其余的账单将留在盒中,继续参加促销活动,直到活动结束。
在紧张的复习NOIP阶段,球球和小姜实在没有精力来计算促销活动的花费,他们找到了聪明的你,你的任务是根据每天活动的信息算出促销活动的总花费。

输入格式

输入的第一行是一个整数n,表示促销的天数。(1 <= n <= 5000)
在接下来的n行中,每行有若干个非负整数,用空格隔开。第i+1行的数据代表第i天的账单信息,每行第一个整数k(0 <= k <= 10^5)。表示今天有多少个新账单。接下来k个正整数表示每张账单的金额wij(1 <= wij <= 10^6)

输出格式

输出中只有一个整数,表示整个促销活动期间所有的花费。

样例输入

5 3 1 2 3 2 1 1 4 10 5 5 1 0 1 2

样例输出

19

#include <cstdlib>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <cstring>
#include <string>
#include <cstdio>const long maxn = 5010;
long n;long root = 0;
long rs[maxn];
long ls[maxn];
long tree[maxn];
long sum[maxn];
long hr[maxn];
long top = 0;long ABS(long a)
{return a>0?a:-a;
}void l_rotate(long &k)
{long tmp = rs[k];rs[k] = ls[tmp];ls[tmp] = k;sum[tmp] = sum[k];sum[k] = sum[ls[k]]+sum[rs[k]];k = tmp;
}void r_rotate(long &k)
{long tmp = ls[k];ls[k] = rs[tmp];rs[tmp] = k;sum[tmp] = sum[k];sum[k] = sum[ls[k]]+sum[rs[k]];k = tmp;
}void insert(long& k,long v)
{if (k == 0){top ++;tree[top] = v;hr[top] = rand();sum[v] = 1;k = top;return;   }sum[k] ++;if (v <= tree[k]){insert(ls[k],v);if (hr[ls[k]]<hr[k])r_rotate(k);}else{insert(rs[k],v);if (hr[rs[k]]<hr[k])l_rotate(k);}
}long first(long &k)
{if (!ls[k]){long tmp=k;k=rs[k];return tree[tmp];}return first(ls[k]);
}long last(long &k)
{if (!rs[k]){long tmp=k;k=ls[k];return tree[tmp];}return last(rs[k]);
}inline int getint()
{int rs=0;char tmp;bool sgn=1;do tmp = getchar();while (!(isdigit(tmp))&&tmp-'-');if (tmp=='-'){tmp=getchar();sgn=0;}do rs = (rs<<3)+(rs<<1)+tmp-'0';while (isdigit(tmp=getchar()));return sgn?rs:-rs;
}int main()
{n = getint();long ans = 0;for (long i=1;i<n+1;i++){long k = getint();while ( k -- )insert(root,getint());ans += ABS(first(root)-last(root));}if (ans-2)printf("%ld",ans);elseprintf(" ");return 0;
}

【平衡二叉树】超市促销相关推荐

  1. 7-69 超市促销 (6 分)

    7-69 超市促销 (6 分) 已知某超市内大白菜正在促销,单次购买5公斤以下每公斤1.8元:5公斤以上(包括5公斤,下同)每公斤1.6元:10公斤以上每公斤1.4元:20公斤以上每公斤1.0元.编程 ...

  2. 【线段树】超市促销 rqnoj572

    超市促销 RQNOJ 572 [题目描述] 球球和小姜管理着巨大的校园超市联盟,听说今年将有很多OIer到学校来参加NOIP,他俩决定在NOIP期间(包括准备期间)举行促销活动. 促销活动必须遵守下列 ...

  3. 超市促销叫卖的语音是怎么做的?介绍简单小方法,方便又快捷

    超市促销叫卖的语音是怎么做的?介绍简单小方法,方便又快捷 平时在逛超市或者逛街的时候,经常可以听到一些叫卖声,比如超市促销的声音,或者小摊贩们用喇叭做的沿街叫卖的声音等等.那么,如果我们自己想要做这种 ...

  4. JAVA编写学校超市选址问题_中小型超市商品管理系统设计与实现【开题报告+文献综述+毕业论文】.docx...

    本科毕业论文开题报告信息管理与信息系统中 小 型 超 市 商 品 管 理 系 统 设 计 与 实 现一.立论依据 1.研究意义.预期目标随着中国经济的不断发展,计算机的普及率越来越高,超市的管理手段发 ...

  5. java 策略模式 促销_设计模式之策略模式

    0x01.定义与类型 定义:定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化不会影响到使用算法的用户. 从一系列里抽象出不变的部分 策略模式是将可变的部分从程序中抽象分离成算法 ...

  6. 计算机病毒的八个特征,计算机病毒的五个特征- 1:.单项选择题(8)

    单项选择题 A.人不可避免地会导致贫穷 B.人一旦起了争夺,就说明有欲望没有达到 C.只有当人的追求没有止境时,才会导致贫穷 D.如果没有发生混乱,说明追求并不是没有止境的 76:一间房屋的长.宽.高 ...

  7. elxel表格纸张尺寸_印刷设计必懂知识:印刷纸张类型介绍

    纸引未来网,造纸印刷包装行业人聚集地,有纸张价格指数,求购彩盒.纸张订单信息 纸引未来网讯 关于印刷纸张种类主要按纸张包装形式划分和用途划分,介绍了常见的11种印刷纸张类型,这将是一个系列的印刷设计知 ...

  8. 撕掉“丑”的标签,体素是如何让游戏更有趣的?

    大家好,又到了更新Monster Farm开发日志的时候,这次是由我大狸主讲.作为更文一定要又臭又长又啰嗦的强迫症,我已经看不下去前面延静斋孙(Zed) Erenyx(下文可能会习惯成自然地称他为萍萍 ...

  9. 啥?分布式啥?啥事务?

    二将军问题 我们先来看个故事,相信会有助于你对分布式事务的理解.二将军问题是一个计算机领域一个经典的问题. 「故事背景」黑白两军交战之际,两股白军将黑军被围困在山谷之中:山谷两侧任意一股白军都比山谷中 ...

最新文章

  1. DroidPilot 测试脚本详解 (一)
  2. linux centos7 yum 报错 Public key for *.rpm is not installed 解决方法
  3. 2.5亿被腰围改变的中国人,哪个省胖子最多?
  4. RME二次开发之“修改矩形风管为圆形风管”即实现“天圆地方”连接。
  5. RocketMQ常见面试题
  6. PHP学习总结(11)——PHP入门篇之WAMPServer多站点配置
  7. c语言程序设计2020年版,2020年新版c语言程序设计题库.docx
  8. 微信app支付php案例分析,PHP实现APP微信支付的实例讲解
  9. Python爬虫之爬取豆瓣图书TOP250
  10. 实体关系图 (ERD) 指南
  11. 好程序员大数据培训之Hadoop常见问题
  12. Hive创建表的几种方式
  13. 300张现场照片,揭秘移动云大会!
  14. Leetcode 2327. Number of People Aware of a Secret [Python]
  15. mac怎么查node版本_Mac更新node版本和npm版本
  16. 基于JavaWeb的网上书店的设计与实现
  17. xampp的下载安装及使用
  18. java 在数组末尾添加元素和在任意位置删除元素
  19. 也看罗永浩的锤子手机
  20. 微信小程序导入csv文件乱码问题

热门文章

  1. java角谷_[蓝桥杯]角谷猜想问题
  2. 游戏运动模糊技术讲解
  3. groovy语法基础
  4. 洛谷P3373 【模板】线段树 2
  5. UPC10728:Imputation
  6. cpu平均负载高的几种情况
  7. 微信小程序---实现VR看房效果
  8. 基于数字证书的windows安全登录
  9. ATEN CS22DP 2端口USB DisplayPort带线式KVM多电脑切换器 (外接式切换按键)
  10. java无响应_Java HttpClient请求无响应解决方案