当前位置: 首页 > news >正文

Repeated Sequence

 

记sum=a[1]+a[2]+a[3]+...+a[n]。

该序列以a[1],a[2],a[3]....a[n]为循环节,明显的,问题可转化为:s%sum是否为该序列的某个连续子序列和。

断环为链。将a复制一份。

枚举a[i]为左端点的所有区间的和。再查找s是否存在。二分O(logn),哈希O(1)均可以实现查找。

以a[i+1]为左端点的所有区间再从头求一遍?

不行的。

在处理a[i]时,每个区间减去a[i]即是a[i+1]的情况。

这里,在查找s的时候加上要减去的值就可以巧妙地实现了。

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define endl '\n'
unordered_map<int,bool>mp;signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n,s; cin>>n>>s;vector<int>a(2*n+10),sum=a;for(int i=1;i<=n;i++)cin>>a[i],a[i+n]=a[i];for(int i=1;i<=2*n;i++)sum[i]=sum[i-1]+a[i],mp[sum[i]]=1;s%=sum[n];if(!s){cout<<"Yes"; return 0;}for(int i=0;i<n;i++){if(mp[s+sum[i-1]]){cout<<"Yes"; return 0;}}cout<<"No";
}

对比总结:

map,优点:有序;缺点:增、删、改、查时间O(logn)。 

unordered_map,优点:增、删、改、查O(1);缺点:无序。

25/2/21

http://www.lryc.cn/news/540809.html

相关文章:

  • CT dicom 去除床板 去除床位,检查床去除
  • react 踩坑记 too many re-renders.
  • YOLOv8与BiFormer注意力机制的融合:提升多场景目标检测性能的研究
  • Ubuntu24.04LTS的下载安装超细图文教程(VMware虚拟机及正常安装)
  • c++贪心系列
  • 爬虫第七篇数据爬取及解析
  • LangChain 技术入门指南:探索语言模型的无限可能
  • 解锁D3.js与PlantUML的交互奥秘:探索知识图谱数据可视化新领域
  • OpenCV机器学习(8)随机森林(Random Forests)算法cv::ml::RTrees类
  • Java四大框架深度剖析:MyBatis、Spring、SpringMVC与SpringBoot
  • MySQL系列之身份鉴别(安全)
  • 纯手工搭建整套CI/CD流水线指南
  • 侯捷 C++ 课程学习笔记:C++ 基础与演化
  • LangChain:AI大模型开发与分布式系统设计
  • AI赋能编程:PyCharm与DeepSeek的智能开发革命
  • c++:stack与deque
  • Linux-C/C++《C++/1、C++基础》(C++语言特性、面向对象等)
  • 交易所开发:数字市场的核心动力
  • Spring Boot 应用(官网文档解读)
  • .Net面试宝典【刷题系列】
  • Unity游戏制作中的C#基础(3)加减乘除算术操作符,比较运算符,逻辑与,或运算符
  • 如何优化 Webpack 的构建速度?
  • win10把c盘docker虚拟硬盘映射迁移到别的磁盘
  • conda 配置源
  • 使用nvm管理node.js版本,方便vue2,vue3开发
  • Linux离线环境安装miniconda并导入依赖包
  • 【opencv】图像基本操作
  • 泛微OA编写后端Rest接口
  • AI助力下的PPT革命:DeepSeek 与Kimi的高效创作实践
  • 002 SpringCloudAlibaba整合 - Feign远程调用、Loadbalancer负载均衡