全人杯奖金
Description
万人瞩目的第一届“全人杯”思维挑战赛正在紧锣密鼓的进行中,比赛的类别包括数学、物理和信息。为了激励同学们踊跃参与,比赛设置了一系列的奖项。对于每个学科,分别设置了一、二、三等奖以及鼓励奖和参与奖。其中,一等奖预设x名,奖金a元,二等奖预设y名,奖金b元,三等奖预设z名,奖金c元,对于未获得一、二、三等奖但是得分在m(m>0)分及以上的学生均为鼓励奖(数据保证有学生会获得鼓励奖),奖金d元,对于剩余未获奖的学生,只要得分不为0分均可以获得参与奖(数据不保证一定有学生获得参与奖),奖金e元。
(获奖规则纯属杜撰,与现实无关)
当比赛结果出来后,组织者需要把奖金预算上报给学校,你以为这很简单吗?并不是,因为每年都会存在成绩相同的并且都可以领奖学金的同学,这部分学生的存在让奖学金的最终数量变得不确定了起来。比如一等奖有三名同学,有两名同学都并列第三名,由于这两名同学分数相同,学校肯定不能区别对待,所以这两名学生都会获得一等奖,同样二等奖、三等奖也是如此,当然一名同学最多只能获得一种奖学金。
现在计算机老师已经统计出每位同学信息挑战赛的成绩ai,现需要计算出学校一共需要发放多少奖学金。
Format
Input
输入共四行:
第一行一个正整数n表示参加信息挑战赛学生人数;
第二行n个整数表示每位学生的信息挑战赛成绩;
第三行四个正整数x,y,z,m分别表示一、二、三等奖预设名额以及鼓励奖分数线。
第四行五个正整数a,b,c,d,e分别表示一、二、三等奖、鼓励奖、参与奖奖学金金额。
Output
所有学生获得的奖学金总数。
Samples
输入数据 1
12
0 2 3 3 4 5 7 7 7 8 9 9
1 2 2 2
300 200 100 50 20
输出数据 1
1750
样例解释
一等奖预设1名,每人奖金300,但是有两位,共600元;
二等奖预设2名,每人奖金200,但是有4位,共800元;
三等奖预设2名,每人奖金100,有2位,共200元;
鼓励奖分数线2分,每人奖金50,满足要求学生3位,共150元
参与奖无学生获得。
总共奖金共计1750。
Limitation
对于100%的数据,4<=x+y+z<n<=100000,0<=e<=d<=c<=b<=a<=1000, 0<=m,ai<=200000。
寻宝
Description
传说很遥远的藏宝楼顶层藏着诱人的宝藏。小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书。说明书的内容如下:
藏宝楼共有N+1层,最上面一层是顶层,顶层有一个房间里面藏着宝藏。除了顶层外,藏宝楼另有N层,每层M个房间,这M个房间围成一圈并按逆时针方向依次编号为0,…,M−1。其中一些房间有通往上一层的楼梯,每层楼的楼梯设计可能不同。每个房间里有一个指示牌,指示牌上有一个数字x,表示从这个房间开始按逆时针方向选择第x个有楼梯的房间(假定该房间的编号为k),从该房间上楼,上楼后到达上一层的k号房间。比如当前房间的指示牌上写着2,则按逆时针方向开始尝试,找到第2个有楼梯的房间,从该房间上楼。如果当前房间本身就有楼梯通向上层,该房间作为第一个有楼梯的房间。
寻宝说明书的最后用红色大号字体写着:“寻宝须知:帮助你找到每层上楼房间的指示牌上的数字(即每层第一个进入的房间内指示牌上的数字)总和为打开宝箱的密钥”。
请帮助小明算出这个打开宝箱的密钥。
Format
Input
输入文件名为 treasure.in。
第一行2个整数N和M,之间用一个空格隔开。N表示除了顶层外藏宝楼共N层楼,M表示除顶层外每层楼有M个房间。
接下来N×M行,每行两个整数,之间用一个空格隔开,每行描述一个房间内的情况,其中第(i−1)×M+j行表示第i层j−1号房间的情况(i=1,…,N;j=1,…,M)。第一个整数表示该房间是否有楼梯通往上一层(0表示没有,1表示有),第二个整数表示指示牌上的数字。注意,从j号房间的楼梯爬到上一层到达的房间一定也是j号房间。
最后一行,一个整数,表示小明从藏宝楼底层的几号房间进入开始寻宝(注:房间编号从0开始)。
Output
输出文件名为 treasure.out。
一个整数,表示打开宝箱的密钥,这个数可能会很大,请输出对20123取模的结果即可。
Samples
输入数据 1
2 3
1 2
0 3
1 4
0 1
1 5
1 2
1
输出数据 1
5
样例解释
从一楼1号房间进入藏宝楼,1号房间(0,3)表示该房间无楼梯,逆时针找到第3个有楼梯的房间上楼,指示牌数字为3。
从一楼的2号房间进入2楼2号房间,2楼2号房间(1,2)表示该房间有楼梯,逆时针找到第2个有楼梯的房间上楼,指示牌数字为2。
最终从2楼1号房间进入顶楼,指示牌数字之和为3+2=5。
Limitation
对于50%的数据,有0<N<=1000,0<x<=10000;
对于100%的数据,有0<N<=10000,0<M<=100,0<x<=1000000。
卖青团的小姑凉
Description
清明节快到了,为了满足广大群众对青团的需求,清兰购置了一台青团生产机器,把材料放入机器,青团机器可以一次性高效的生产出多个青团,但是这个机器有一个bug,不同批次生产出的青团大小是不同的,同一批次连续生产的青团会越来越大,准确的,同一批次第i个青团比第i-1个青团大1,考虑到成本问题,青团的价格也会增加1。由于每天的顾客数量很多,购买的青团数量不少,机器生产出的青团价格也不相同,所以清兰总是搞不清楚一大堆青团的价格如何。
清兰找到了你,希望你告诉她每次售出青团时,青团的总价格。
对于大小为c的青团,它的售价为c。同时,青团生产机器有个特性,那就是生产出来的青团的大小依次增加1。为了存储已经生产出来的青团,清兰使用了一种类似于栈的结构,在一天的开始,这个栈为空栈。现在有n次操作,分为两种:
1 l r:青团生产机器生产出一批青团,大小依次为l,l+1…r-1,r。清兰将这些团子依次入栈,也就是在栈顶依次加入l,l+1…r-1,r。
2 k:有一位客人想要购买k个青团,此时清兰会依次从栈顶取出k个青团并售出,保证k不大于当前栈内的青团个数,此时清兰想知道售出这k个青团的总价格。
你要做的就是对于每个操作2输出这些青团的总价格。
Format
Input
输入文件名为sale.in。
第一行包含一个正整数 n,表示操作的次数。
接下来 n 行,每行描述一种操作,第一个整数op表示询问的种类,若为1接下来有两个正整数l,r,含义如题面所示,为2接下来有一个整数k,含义如题面所示。
Output
输出文件名为sale.out。
输出若干行,对于每次操作2,输出这些团子的售价之和。
Samples
输入数据 1
6
1 1 14
2 5
1 14 19
1 1 9
2 8
2 10
输出数据 1
60
44
124
样例解释
操作1后,栈内有青团1,2…14;
操作2,卖出10…14一共5个青团,总售价为60;
操作3后,栈内有青团1…9,14…19;
操作4后,栈内有青团1…9,14…19,1…9;
操作5,卖出2…9一共8个青团,总售价44;
操作6后,卖出7…9,14…19,1一共10个青团,总售价124。
Limitation
对于 100% 的数据,1≤n≤2e5, 0≤l≤r≤1e6, 1≤k≤1e10。
求和
Description
有一个长为n的序列a1,a2…an。
现定义sum(l,r)为al,al+1,…ar-1,ar这些数去重后的和。
你需要求出
∑
l
=
1
n
∑
r
=
1
n
s
u
m
(
l
,
r
)
\sum_{l=1}^n\sum_{r=1}^n sum(l,r)
l=1∑nr=1∑nsum(l,r)
结果可能很大,需要对10^9+7取模。
Format
Input
输入文件名为sum.in。
第一行一个正整数n表示序列长度。
第二行n个正整数表示这个序列。
Output
输出文件名为 sum.out。
输出一行一个正整数表示答案。
Samples
输入数据 1
4
1 1 4 5
输出数据 1
51
样例解释
sum(1,1)=1,sum(1,2)=1,sum(1,3)=5,sum(1,4)=10
sum(2,2)=1,sum(2,3)=5,sum(2,4)=10
sum(3,3)=4,sum(3,4)=9
sum(4,4)=5。
因此答案为 1+1+5+10+1+5+10+4+9+5=51。
Limitation
对于100%的数据,1<n<=5e5,1<=ai<=1e9。
标签:10,指示牌,试题,day6,sum,房间,青团,楼梯,CSP From: https://blog.csdn.net/CylMK/article/details/142961261