思路:前缀和+滑动窗口
- #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;
- }
-
相关阅读:
【C++ Miscellany】C++重要的几项改变、标准程序库
竞赛选题 深度学习人体语义分割在弹幕防遮挡上的实现 - python
微信小程序官方组件目录结构
515. 在每个树行中找最大值
手写一个HashMap
华为OD技术面试-连接后等于目标字符串的字符串对串-2024手撕代码真题
16. 机器学习——决策树
分布式文件存储 - - - MinIO从入门到飞翔
2022年中高级Android面试知识点记录
HTTP代理出现错误是什么原因?如何解决?
-
原文地址:https://blog.csdn.net/weixin_52030057/article/details/132996998