1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

把原数组转为前缀和:pre[0]=0,pre[i]=papers[0..i-1]之和。任意连续子段 [l..r] 的和为: sum = pre[r+1] - pre[l]。

要求 left <= sum <= right,等价于对每个 j = r+1,统计之前的 i < j 中有多少个 pre[i] 落在区间: pre[i] ∈ [ pre[j]-right , pre[j]-left ]。

所以问题变成:按顺序枚举 pre[j],动态维护已出现的前缀和值集合,支持“统计某个数值区间内的出现次数”。

P4535.第2题-数字卡牌小游戏

    1000ms Tried: 191 Accepted: 56 Difficulty: 8 所属公司 : 华为
    算法与标签>树状数组

题目描述

今天,小明的数学老师带来了一叠数字卡牌,每张卡牌上标有数字,有正有负也有零。老师打乱了卡牌顺序,并将牌面展示出来。接着老师在黑板上写下了一个闭区间范围 [left, right]。

老师对小明说:“你可以从这叠卡牌中任意抽取一叠,起始位置不限,抽取的张数不限,但是有个要求,你抽取出的卡牌,牌面加起来的和需要落在黑板上的区间范围内。小明,你算算看,一共能有几种抽取方法?”

小明听完,眼冒金星。你能帮助小明写个程序,算出有几种方法吗?

输入描述

  • 第一行:纸牌数量 n(1 < n <= 10000)
  • 第二行:纸牌数组 papers[](-255 <= papers[i] <= 255),共 n 个整数
  • 第三行:目标闭区间的左值 left 与右值 right(-2550000 <= left <= right <= 2550000)

输出描述

  • 一个整数,表示满足条件的抽取方法种类数。

样例1

输入:

4
1 -1 1 -1
0 0

输出:

4

解释:
共有4张纸牌,牌面数字为1,-1,1,-1,方法为取第1张到2张,取第2张到第3张,取第3张到4张,取第1到4张,共4种

样例2

输入:

3
-3 4 -2
-3 2

输出:

5

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 2, 124ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?