当前位置:首页 > 题解目录 > 正文内容

【题解】前缀最小值

亿万年的星光4年前 (2022-10-18)题解目录2563

【题目描述】

求一个数列的所有前缀最小值之和。
即:给出长度为n的数列a[i],求出对于所有1<=i<=n,min(a[1],a[2],...,a[i])的和。
由于读入较大,数列由随机种子生成。
其中a[1]=x,a[i]=(379*a[i-1]+131)%997。

【输入描述】

一行两个正整数n,x,分别表示数列的长度和随机种子。(n<=100000,x<997)

【输出描述】

一行一个正整数表示该数列的前缀最小值之和。

【样例输入】

5 666

【样例输出】

1650

【提示】

数列为{666,304,692,188,596},前缀最小值为{666,304,304,188,188},和为1650。


前缀最小:

比如,有数列:666 304 692 188 596,前缀最大值为:666,304,304,188,188,和为1650。
对于每个位置的前缀最小值解释如下:对于第1个数666,只有一个数,一定最大;对于第2个数,求出前两个数的最小数,还是304;对于第3个数,求出前3个数的最小数是304……其余位置依次类推,最后求前缀最小值得和。


【参考代码】

#include<bits/stdc++.h>
using namespace std;
int a[100001]; 
int main(){
	int n,x,i,mi,s=0;
	cin>>n>>x;
	mi = a[1] = x;
	for(i=2;i<=n;i++){
		a[i]=(379*a[i-1]+131)%997;
	}
	for(i=1;i<=n;i++){
		mi = min(mi,a[i]);
		s +=  mi;
	}
	cout<<s;
	return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    标签: 动态规划
    分享给朋友:

    相关文章

    【题解】使每位学生都有座位的最少移动次数

    【题目描述】一个房间里有 n 个 空闲 座位和 n 名 站着的 学生,房间用一个数轴表示。给你一个长度为 n&...

    【题解】小X与机器人

    【题解】小X与机器人

    【题目描述】小X的老师很喜欢围棋。众所周知,围棋的棋盘有19行19列,共有361个交叉点。为方便起见,我们把这些行列按顺序编号为1~19,并用(x, y)表示第x列第y行的位置。例如下图中,A用(16...

    【题解】打击犯罪

    【题目描述】某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个团伙都可以通过直接或间接的方式联系,这样这里就...

    【题解】转换的问题

    【题目描述】那么,问题来了:输入一个十进制数N,将它转换成R进制数输出。【输入描述】输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<&...

    【题解】统计自然数

    【题目描述】某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出...

    【题解】报数游戏

    【题目描述】路飞在和他朋友们一块玩一个游戏。由于路飞的机智,这个游戏由路飞担任裁判。首先,路飞会给他们一个人一个编号,并且每个人的编号都不相同。接下来的每一个回合,会给一个数,编号不超过它的最大编号的...