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分析

解题思路

  • 题意:给长度为 n 的数字串 s(只含 '0'~'9'),给定一个偶数 k。若某个长度为 k 的子串的前 k/2 个数字之和等于后 k/2 个数字之和,则该子串为“幸运子串”。统计所有幸运子串个数。

  • 算法:前缀和 + 滑动窗口 将字符转为数字,建立前缀和数组 pre[i] 表示前 i 个数字之和。任意窗口 [l, l+k-1]:

    • 前半和 sum1 = pre[l+k/2] - pre[l]
    • 后半和 sum2 = pre[l+k] - pre[l+k/2]
    • 若 sum1 == sum2,答案加一。

P4269.第3题-幸运子串

    1000ms Tried: 41 Accepted: 16 Difficulty: 3 所属公司 : 百度
    算法与标签>前缀和

题目内容

给定一个仅包含数字字符的字符串sss,长度为nnn 。又给定一个偶数kkk ,满足2≤k≤n2≤k≤n2≤k≤n 。

我们称字符串sss中所有长度为kkk 的子串为幸运子串,当且仅当该子串的前k/2k/2k/2个字符对应的数字之和等于后k/2k/2k/2个字符对应的数字之和。

请计算并输出字符串sss中幸运子串的总数。

【名词解释】

  • 子串:从字符串中连续选取一段字符(可以是整个字符串,也可以是空串)得到的新字符串;

输入描述

每个测试文件均包含多组测试数据。第一行输入一个整数t(1<t<104)t(1<t<10^4)t(1<t<104)代表测试用例数。

每组测试数据描述如下:

  • 在一行上输入两个整数n,kn,kn,k (2≤n≤1062≤n≤10^62≤n≤106;2≤k≤n2≤k≤n2≤k≤n;kkk为偶数);
  • 在一行上输入一个长度为nnn 、仅由数字字符 "000" 到 "999" 构成的字符串 。

除此之外,保证所有测试用例中nnn 的总和不超过 10610^6106。

输出描述

对于每个测试用例,新起一行,输出一个整数,表示字符串 sss中幸运子串的数量。

样例1

输入

2
4 2
1122
6 4
121212

输出

2
3

登录后即可使用 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 1, 111ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

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

Forgot password or username?