思路:前缀和+滑动窗口
- #include
- #define MAXN 100010
- using namespace std;
- int a[MAXN];
-
- int main(){
- int n,m;
- cin>>n>>m;//n数量 m金额
- for(int i=1;i<=n;i++){
- int t;
- cin>>t;
- a[i]=a[i-1]+t;//前缀和
- }
- vector
int,int>> ans; - int i=1,j=1;//滑动窗口
- while(i<=j&&j<=n){
- // printf("%d-%d:%d\n",i,j,a[j]-a[i-1]);
- if(a[j]-a[i-1]==m){
- ans.push_back(make_pair(i,j));
- i++,j++;
- }
- else if(a[j]-a[i-1]>m) i++;
- else j++;
- if(i>j)j++;
- }
- if(ans.size()==0){
- //存储大于m的最小整数
- int minNum=8989898;
- i=1,j=1;
- while(i<=j&&j<=n){
- // printf("%d-%d:%d\n",i,j,a[j]-a[i-1]);
- if(a[j]-a[i-1]>m&&a[j]-a[i-1]
- minNum=a[j]-a[i-1];
- ans.clear();
- ans.push_back(make_pair(i,j));
- i++;
- }
- else if(a[j]-a[i-1]==minNum){
- ans.push_back(make_pair(i,j));
- i++;
- }
- else if(a[j]-a[i-1]>minNum) i++;
- else j++;
- if(i>j)j++;
- }
- }
- for(auto &[x,y]:ans){
- cout<
"-"< - }
- return 0;
- }
-
相关阅读:
linux系统中的信号(部分叙述)
贪心算法求解活动选择问题
支持语音与视频即时通讯项目杂记(一)
Vue笔记十一:Vuex基础应用
Vue.js核心技术解析与uni-app跨平台实战开发学习笔记 第6章 Vue.js路由 6.3 路由重定向以及动画路由 && 6.4 路由传参
centos部署tomcat
「每周译Go」这次我们来点不一样的!--《How to Code in Go》系列上线
深度学习21天——卷积神经网络(CNN):实现mnist手写数字识别(第1天)
(9)使用RESTful风格时开启静态资源的映射和请求方式转换的配置
大数据-74 Kafka 高级特性 稳定性 - 控制器、可靠性 副本复制、失效副本、副本滞后 多图一篇详解
-
原文地址:https://blog.csdn.net/weixin_52030057/article/details/132996998