当前位置: 首页 > 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.dtcms.com/a/30209.html

相关文章:

  • 基于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写俄罗斯方块手机小游戏
  • 图论 之 最小生成树
  • 深入解析Spring Cloud Config:构建高可用分布式配置中心
  • SpringBoot 新特性
  • C++ 设计模式-模板方法模式
  • 【ROS2】卡尔曼滤波学习:概念、数学推导和C++实现方法
  • 【Linux探索学习】第三十弹——线程互斥与同步(上):深入理解线程保证安全的机制
  • CPU、SOC、MPU、MCU--详细分析四者的区别
  • 【Springboot3】Springboot3 搭建RocketMQ 最简单案例
  • UE5 GamePlay 知识点
  • Powershell Install deepseek