解题思路:题目未要求按原画序列号排序,所以可以先排序,因为连续的画作艺术价值差异最小
注意事项:数组(容器)注意不要越界,大数用long long
参考代码:
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
/////画展布置(贪心算法)
void picture_choose()
{
int N,M;//画的总数与要选择的量
cin>>N>>M;
vector<long long>draw_val(N);
for(int i=0;i<N;i++)
{
cin>>draw_val[i];
}
//排序,因为连续的画作艺术价值差异最小
sort(draw_val.begin(),draw_val.end(),[](int a,int b){return a<b;});
int size=draw_val.size();
vector<long long>sum;//记录每一组含有M个元素差的和
for(int i=0;i<=size-M;i++)
{
long long n=0;//记录和
int t=i;//遍历i开始
for(int j=0;j<M-1;j++)
{
n+=abs(draw_val.at(t)*draw_val.at(t)-draw_val.at(t+1)*draw_val.at(t+1));
t++;
}
sum.push_back(n);
}
sort(sum.begin(),sum.end(),[](int a,int b){return a<b;});
cout<<sum.front()<<endl;
}
int main()
{
picture_choose();
return 0;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复