[BZOJ2947]促销(Splay)】的更多相关文章

Description Great Bytelandish的超级市场网络请你编写一个程序模拟促销商品的成本费用(simulating costs of the promotionbeing prepared).推销商品要遵守以下规则: 1. 想参与促销的顾客在自己的帐单上写下个人信息,然后将票据投入一个特制的投票箱中. 2. 促销期间,每天结束后,有2张票据将被取出--消费金额最大的和最小的两张帐单.消费金额最大的那位顾客得到的奖品价值等于取出的2张帐单的差额. 3. 为了避免多次得奖,所有取出…
Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 178  Solved: 119[Submit][Status][Discuss] Description Bytelandish连锁超市委托你编写一个程序来模拟一项即将施行的促销活动,该活动的规则如下: ●想要参与的顾客,只需把他的个人资料写在帐单上,并把帐单放入投票箱: ●每天活动结束时,数额最大.最小的两张帐单被取出,付款数额最大的顾客将获得一笔奖金,价值为取出的两张帐单的数额之差: ●为了不重…
2947: [Poi2000]促销 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 181  Solved: 120[Submit][Status][Discuss] Description Bytelandish连锁超市委托你编写一个程序来模拟一项即将施行的促销活动,该活动的规则如下: ●想要参与的顾客,只需把他的个人资料写在帐单上,并把帐单放入投票箱: ●每天活动结束时,数额最大.最小的两张帐单被取出,付款数额最大的顾客将获得一笔奖金,价值为取…
BZOJ_2947_[Poi2000]促销_堆 Description Bytelandish连锁超市委托你编写一个程序来模拟一项即将施行的促销活动,该活动的规则如下: ●想要参与的顾客,只需把他的个人资料写在帐单上,并把帐单放入投票箱: ●每天活动结束时,数额最大.最小的两张帐单被取出,付款数额最大的顾客将获得一笔奖金,价值为取出的两张帐单的数额之差: ●为了不重复计算,取出的两张帐单不再放回箱子,而剩下的帐单仍保留在箱中,进行第二天的活动. 超市每天的营业额很大,因此可假定:每天活动结束时,…
1251: 序列终结者 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 3778  Solved: 1583[Submit][Status][Discuss] Description 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技术含量……这样 我也出一道题,我出这一道的目的是为了让大家以后做这种题目有一个…
Description 这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器.你能帮助他吗?为了明确任务目标,可可对“文本编辑器”做了一个抽象的定义:   文本:由0个或多个字符构成的序列.这些字符的ASCII码在闭区间[32, 126]内,也就是说,这些字符均为可见字符或空格.光标:在一段文本中用于指示位置的标记,可以位于文本的第一个字符之前,文本的最后一个字符之后或文本的某两个相邻字符之间.文本编辑器:为一个可以对一段文本和该文本中的一个光标进行如下七条操作的程…
来自wjmzbmr的splay模板 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; + ; ; struct Node { Node*ch[], *p; int size, val, mx; int add; bool rev; Node() { size = ; val = mx = -INF; add = ; } bool d() { ]; } void set…
查最小值,删除,翻转... 显然splay啊... #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define N 200005 #define inf 0x3f3f3f3f using namespace std; int n; ], fa[N]; int a[N]; int mn[N],zhi[N],size[N]; void push_up(int…
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 Input 第一行为n,m n表示初始序列有n个数,这个序列依次是(1,2……n-1,n)  m表示翻转操作次数 接下来m行每行两个数[l,r] 数据保证 1<=l<=r<=n Output 输出一行n个数字,表示原始序列经过m次变换后的结果 Sample Input 5 3 1 3…
人生第一道splay不出所料是一道裸题,一道水题,一道2k代码都不到的题 #include <cstdio> ,n,p,q; ],c[][],size[],sp[]; void rot(int x) { ]==x); size[y]=size[c[y][k]]+size[c[x][k]]+;size[x]=size[c[x][!k]]+size[y]+; c[y][!k]=c[x][k];fa[c[y][!k]]=y; fa[x]=fa[y];]==y]=x; c[x][k]=y;fa[y]=…