当前位置: 首页 > 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

相关文章:

  • 基于STM32单片机的智能蔬菜大棚温湿度监测系统设计
  • elabradio入门第八讲——帧同步技术
  • 伯克利 CS61A 课堂笔记 12 —— Syntax
  • Django-Vue 学习-VUE
  • 蓝桥杯 Java B 组之岛屿数量、二叉树路径和(区分DFS与回溯)
  • 第8章:LangChain检索增强生成RAG--2.3Naive RAG
  • vue 手写分页
  • 【Excel】【VBA】根据内容调整打印区域
  • 高级SQL技术在Python项目中的应用:ORM与深度性能优化
  • 索引有哪些缺点以及具体有哪些索引类型
  • 《QT+PCL 第五章》点云特征-RIFT
  • 智慧城管大屏可视化决策系统
  • 【QT 网络编程】HTTP协议(二)
  • 【Gin】| 框架源码解析 :路由详解
  • jQuery UI 主题:设计、定制与优化指南
  • 【Python 语法】常用 Python 内置函数
  • 【Python爬虫(39)】掌控全局:分布式爬虫的任务管理与监控之道
  • 单元测试的策略有哪些,主要包括什么?
  • 【C/C++】分隔链表 (leetcode T86)
  • DeepSeek写俄罗斯方块手机小游戏
  • 开发手机网站/百度问一问客服人工在线咨询
  • 企业动态网站模板/soe搜索优化
  • 北京最大做网站的公司/seo短期培训班
  • 上海餐饮网站建设/百度账号官网
  • 设计网站名称/谷歌seo和百度seo区别
  • 静态网站开发实训报告/昆明做网站的公司