A1044 Shopping in Mars (25 分)
2024-09-06 13:43:24
一、技术总结
- 可以开始把每个数都直接相加当前这个位置的存放所有数之前相加的结果,这样就是递增的了,把i,j位置数相减就是他们之间数的和。
- 需要写一个函数用于查找之间的值,如果有就放返回大于等于这个数的右下标,函数中采用引用的传参方式,就不需要返回值了。
- 在处理存放下标问题上,如果发现有更小的数时,直接清空之前存放的值。
二、参考代码
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
int n, m;
vector<int> sum, result;
void Func(int i, int &j, int &tempsum){
int left = i, right = n;
while(left < right){
int mid = (left + right)/2;
if(sum[mid] - sum[i-1] >= m){
right = mid;
}else{
left = mid + 1;
}
}
j = right;
tempsum = sum[j] - sum[i-1];
}
int main(){
cin >> n >> m;
sum.resize(n+1);
for(int i = 1; i <= n; i++){
scanf("%d", &sum[i]);
sum[i] += sum[i-1];
}
int minans = sum[n];
for(int i =1; i <= n; i++){
int j, tempsum;
Func(i, j, tempsum);
if(tempsum > minans) continue;
if(tempsum >= m){
if(tempsum < minans){
result.clear();
minans = tempsum;
}
result.push_back(i);
result.push_back(j);
}
}
for(int i = 0; i < result.size(); i += 2){
printf("%d-%d\n", result[i], result[i+1]);
}
return 0;
}
最新文章
- Python之路,Day6 - Python基础6
- thinkPHP实现静态页的方法-buildHtml
- NLP--十项沟通前的思想准备
- Sql Server系列:Insert语句
- 利用xtrabackup备份mysql数据库
- 使用扫描二维码打开app
- 开发Yii2过滤器并通过behaviors()行为调用
- ";make_path"; is not exported by the File::Path modul
- eclipse快捷键(转载)
- dynamic_cast 转换示例
- 在Linux机器上安装telnet命令
- mpvue小程序开发之 集成第三方UI框架Vant Weapp UI
- vue的父子组件间的相互传参props及props数据的多种验证机制
- PDF的水印怎么去掉
- 关于isNaN()函数的细节
- tensorflow中的tf.app.run()的使用
- Windows10上安装Keras 和 TensorFlow-GPU
- 菜鸟学SSH(十六)——Struts2内部是如何工作的
- Cordova学习
- 3.1)DFM-塑胶件设计总章