![]() |
#2
rjsp2025-09-22 10:06
在你的代码上修改
#include<stdio.h> int main(){ int n,m,min=0,ans=300000; // 99999; m≤3×10^3,1≤ai≤100 的话,那最大值不是 3×10^3*100 吗?! scanf("%d%d",&n,&m); int a[100]; for(int i=0;i<n;i++){ scanf("%d",&a[i]); // } for(int i=0;i<n-m+1;i++){ // int t=i; min = 0; // for( int j=0; j!=m; ++j ){ // while(m--){ 你的 m 还需要使用呐! min += a[t]; t++; } if(min<ans) ans=min; } printf("%d",ans); return 0; } C语言示例 ![]() #include <stdio.h> int main( void ) { size_t n, m; scanf( "%zu%zu", &n, &m ); unsigned char m_ring_buf[3000]; // 题目规定 m≤3×10^3,1≤ai≤100 unsigned sum = 0; for( size_t i=0; i!=m; ++i ) { scanf( "%hhu", &m_ring_buf[i] ); sum += m_ring_buf[i]; } unsigned min_sum = sum; for( size_t i=0; i!=n-m; ++i ) { unsigned char t = m_ring_buf[i%m]; scanf( "%hhu", &m_ring_buf[i%m] ); sum += m_ring_buf[i%m] - t; if( sum < min_sum ) min_sum = sum; } printf( "%u", min_sum ); } C++语言示例 ![]() #include <iostream> 本地执行时,数据输入结束后需要多按一个 CTRL+Z / CTRL+D#include <algorithm> #include <ranges> #include <vector> using namespace std; int main( void ) { size_t n, m; cin >> n >> m; auto rs = views::istream<unsigned>(cin) | views::take(n) | ranges::to<std::vector>() | views::slide(m) | views::transform( [](auto rgn){ return ranges::fold_left(rgn,0,std::plus{}); } ); cout << std::ranges::min(rs); } |





















#include<stdio.h>
int main(){
int n,m,min=0,ans=99999;
scanf("%d%d",&n,&m);
int a[n];
for(int i=0;i<n;i++){
scanf("%d",a[i]);
}
for(int i=0;i<n-m;i++){
int t=i;
while(m--){
min+=a[t];
t++;
}
if(min<ans) ans=min;
}
printf("%d",ans);
return 0;
}
题目描述
最近有 n 个不爽的事,每句话都有一个正整数刺痛值(心理承受力极差)。爱与愁大神想知道连续 m 个刺痛值的和的最小值是多少,但是由于业务繁忙,爱与愁大神只好请你编个程序告诉他。
输入格式
第一行有两个用空格隔开的整数,分别代表 n 和 m。
第 2 到第 (n+1) 行,每行一个整数,第 (i+1) 行的整数ai代表第 i 件事的刺痛值 ai。
输出格式
输出一行一个整数,表示连续 m 个刺痛值的和的最小值是多少。
输入输出样例
输入
8 3
1
4
7
3
1
2
4
3
输出
6
数据规模与约定
对于 30% 的数据,保证 n≤20。
对于 60% 的数据,保证 n≤100。
对于 90% 的数据,保证 n≤10^3。
对于 100% 的数据,保证 0≤m≤n≤3×10^3,1≤ai≤100。