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

HJ134 1or0

  • 题目
  • 题解(7)
  • 讨论(8)
  • 排行

较难 通过率:17.36% 时间限制:1秒 空间限制:1024M

知识点动态规划

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

描述

定义由 nn 个字符组成的二进制字符串 s1s2⋯sns1​s2​⋯sn​ 的“自审值”为:s1or⁡s2or⁡⋯or⁡sns1​ors2​or⋯orsn​。
现在,对于给定的字符串,你需要独立处理 qq 次询问。每一次询问给定一个区间 [l,r][l,r],求解区间内全部连续子串的“自审值”之和。

其中,or⁡or 表示按位或运算。如果您需要更多位运算相关的知识,可以参考 OI-Wiki的相关章节。
子串为从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。

输入描述:

第一行输入一个整数 n(1≦n≦2×105)n(1≦n≦2×105) 代表字符串的长度。
第二行输入一个长度为 nn、仅由 ‘0’‘0’ 和 ‘1’‘1’ 两个字符组成的字符串 ss,代表给定的字符串。下标从 11 开始。

第三行输入一个整数 q(1≦q≦2×105)q(1≦q≦2×105) 代表询问次数。
此后 qq 行,每行输入两个整数 l,r(1≦l≦r≦n)l,r(1≦l≦r≦n) 代表询问的区间。

输出描述:

对于每一次询问,新起一行。输出一个整数,代表区间内全部连续子串的“自审值”之和。

示例1

输入:

5 10110 2 3 5 1 1

复制输出:

5 1

复制说明:

对于第一次询问,拆分出全部子区间: ∙ ∙区间 [3,3][3,3] 的“自审值”为 11; ∙ ∙区间 [3,4][3,4] 的“自审值”为 1or⁡1=11or1=1; ∙ ∙区间 [3,5][3,5] 的“自审值”为 1or⁡1or⁡0=11or1or0=1; ∙ ∙区间 [4,4][4,4] 的“自审值”为 11; ∙ ∙区间 [4,5][4,5] 的“自审值”为 1or⁡0=11or0=1; ∙ ∙区间 [5,5][5,5] 的“自审值”为 00; 综上所述,“自审值”之和为 1+1+1+1+1+0=51+1+1+1+1+0=5。
#include <bits/stdc++.h> using namespace std; using ll = long long; const int MAXN=200010; char s[MAXN]; int prep[MAXN], sufp[MAXN]; ll presy[MAXN]; int main() { int n, q; scanf("%d", &n); scanf("%s", s+1); for (int i=1;i<=n;i++) { prep[i] = prep[i-1]; presy[i] = presy[i-1]; if (s[i] == '1') { prep[i] = i; } else { presy[i] += i-prep[i]; } } sufp[n+1] = n+1; for (int i=n;i;i--) { sufp[i] = sufp[i+1]; if (s[i+1]=='1') { sufp[i] = i+1; } } scanf("%d", &q); while (q--) { int l,r; scanf("%d%d",&l,&r); ll tot = 1LL * (r-l+2) * (r-l+1) / 2; ll res = presy[r]-presy[l-1]; if (s[l]=='0') { int y = sufp[l]-1; if (y>r) y=r; res -= 1LL * (l-prep[l]-1) * (y-l+1); } printf("%lld\n", tot-res); } return 0; }
http://www.jsqmd.com/news/498278/

相关文章:

  • VCS调试黑科技:用DVE和UCLI快速定位RTL问题的5个高阶技巧
  • 手把手教你解决ESP8266 NodeMcu CH340驱动板串口识别问题(含数据线/驱动/供电全排查)
  • TDA4VM多核异构启动全解析:从硬件上电到Linux控制台的18个关键步骤
  • SLAM性能评估实战:使用evo工具绘制APE、ATE与ARE误差曲线
  • Nunchaku-flux-1-dev集成Java应用:SpringBoot后端图片生成服务开发
  • DASD-4B-Thinking与Token技术结合:智能身份认证系统
  • Youtu-Parsing多场景实战:扫描件、试卷、财报、合同智能解析案例
  • 游戏玩家必看:如何开启Resizable BAR提升显卡性能(附NVIDIA/AMD设置指南)
  • 安川DX200机器人备份全攻略:从U盘选择到程序恢复的保姆级教程
  • 实测李慕婉-仙逆-造相Z-Turbo:一键生成战斗、静谧、情感多风格李慕婉
  • 【Win11+RTX3050】从零避坑:CUDA、cuDNN与TensorFlow-GPU版本匹配全攻略
  • Win7系统下AIR780E USB驱动安装全攻略(附RNDIS网卡禁用技巧)
  • AI辅助开发实践:让快马帮你快速实现趣味小龙虾互动小游戏
  • 突破显存瓶颈:AirLLM如何让70B大模型在4GB GPU上高效运行
  • 从论文到仿真:手把手复现GaN二极管声子辅助隧穿效应的Silvaco实现
  • Anaconda环境下的Chord - Ink Shadow开发:虚拟环境管理与依赖隔离
  • GLM-4.7-Flash参数详解:--max-model-len与--tensor-parallel-size关系
  • 微信小程序开发:onLoad和onShow的5个实战场景解析(附代码)
  • TLSR8258 BLE Mesh开发实战:从零构建智能家居通信网络
  • LobeChat多模态功能体验:图文对话+语音合成,一站式AI助手解决方案
  • 避坑指南:DGL安装时找不到dll文件的终极解决方案(PyCharm+Python3.8实测有效)
  • Petalinux-build网络问题终极解决方案:手把手教你配置本地sstate和downloads(2020.2版)
  • 人工智能计算机视觉毕设实战:从模型选型到部署落地的完整技术路径
  • Nanbeige4.1-3B学术价值:小模型高效推理研究对边缘AI与端侧部署的启示
  • 避坑指南:Cesium加载KML数据时常见的5个问题及解决方案
  • 利用快马平台AI快速生成集成jiathis分享组件的网页原型
  • AI读脸术镜像升级指南:从基础版到高性能版配置教程
  • 可编程集成电路模拟工具PICSimLab从入门到精通:零基础上手硬件模拟沙盒
  • GLM-TTS环境配置全攻略:一键启动Web界面,轻松开启语音合成之旅
  • 卡证检测矫正模型开发者案例:对接MinIO对象存储实现异步矫正队列