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

【题解】前缀最小值

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

【题目描述】

求一个数列的所有前缀最小值之和。
即:给出长度为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;
}


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

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

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

相关文章

【题解】零花钱

零花钱(money.cpp) 【问题描述】 商店里有一件玩具,今天你偶然得知:这件玩具在后⾯的n天里每天的定价(价格可能每天都会改 变),你买了这件玩具后可以以当天的价格卖给商店,...

【题解】最多次数

【题目描述】小蓝有一个字符串 s,他特别喜欢由以下三个字符组成的单词:l,q,b,任意顺序都可以,一共有 6 种可能:lqb、lbq、qlb、qbl、blq、bql。现在...

【题解】网线主管

【题目描述】仙境的居民们决定举办一场程序设计区域赛。裁判委员会完全由自愿组成,他们承诺要组织一次史上最公正的比赛。他们决定将选手的电脑用星形拓扑结构连接在一起,即将它们全部连到一个单一的中心服务器。为...

字符串移位包含问题

【题目描述】对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。给定两个字符串 s_1s1 和 s_2s2,要求判定其中一个字符串是...

【题解】高精度除法

【题目描述】高精除以高精,求它们的商和余数。【输入描述】输入两个低于300位的正整数。【输出描述】输出商和余数。【样例输入】12313123184575776878979876423245678643...

【题解】切割钢管

【题解】切割钢管

【题目描述】小A是某工地的计算工程师。工地现有 n 根钢管,第 i 根钢管的长度为 ai。现在想用这 n 根钢管来做一个支撑用的柱子。我么可以切割这些钢管成为更短的钢管,但是不能缝合两根钢管。为了安全...