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

端点区间影响

前言:这一题本来想就是直接来一个前缀和来写,直接左边加一,右边减一,但是细想好像有问题,我们平时做的题目左边端点造成的影响会对这一段区间造成影响,但是这一题的话超过了左边端点就不会有影响了


在这里插入图片描述


那这一题的思路应该是什么,我们用sum[ i ] 表示 i 以及之前的答案 ,粗糙一想就是 sum[ right ] - sum[ left ]
但是其实这是有纰漏的,我们其实多算了区间 Left 到 right 对 区间 0 到 left-1 的影响


又犯了要给sb的错误, (a-b) 要取模的话 ( ( a-b ) % Mod + Mod ) % Mod


#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;#define ll long long 
const int Mod = 998244353;
int n, m;
const int N = (int)2e5 + 5;
int a[N];string s;
ll sum0[N], sum1[N], num0[N], num1[N];
ll ans[N];
signed main() {cin >> n >> m;cin >> s;for (int i = 0; i < s.size(); i++) {int u = s[i] - '0';int pos = i + 1;ans[pos] += ans[pos - 1];ll t = 0;num0[pos] = num0[pos - 1] + (u == 0);num1[pos] = num1[pos - 1] + (u == 1);sum0[pos] = sum0[pos - 1];sum1[pos] = sum1[pos - 1];if (u) {t = (num0[pos - 1] * pos - sum0[pos - 1]) % Mod;sum1[pos] = (pos + sum1[pos]) % Mod;}else {t = (num1[pos - 1] * pos - sum1[pos - 1]) % Mod;sum0[pos] = (sum0[pos] + pos) % Mod;}ans[pos] += t;sum0[pos] %= Mod; sum1[pos] %= Mod;ans[pos] = (ans[pos] % Mod + Mod) % Mod;}while (m--) {int l, r;cin >> l >> r;ll t = (ans[r] - ans[l - 1]) % Mod;ll one = (num0[l - 1] * (sum1[r] - sum1[l - 1]) % Mod - (num1[r] - num1[l - 1]) * (sum0[l - 1]) % Mod) % Mod;ll zero = (num1[l - 1] * (sum0[r] - sum0[l - 1]) % Mod - (num0[r] - num0[l - 1]) * (sum1[l - 1]) % Mod) % Mod;cout << ((t - one - zero ) % Mod + Mod) % Mod << endl;}return 0;
}
http://www.lryc.cn/news/417428.html

相关文章:

  • Leetcode3224. 使差值相等的最少数组改动次数
  • thinkphp之命令执行漏洞复现
  • 算法板子:匈牙利算法——二分图的最大匹配
  • 轻松拯救数据危机!四大必备的数据恢复软件免费版推荐!
  • windbg常用命令
  • Ubuntu(20.04 LTS)更换镜像源
  • golang使用 copier对象复制时进行类型转化
  • 英特尔18A制程技术分析解读
  • 【百度面试算法题】2024-08-02
  • OSPF基础
  • leetcode 958.二叉树的完全性检验
  • Spring 中请求作用域的数据存储在 ThreadLocal 中还是 Spring 容器中?
  • 基础岛 - 8G显存验证书生·浦语大模型的Demo
  • Jangow靶机攻略
  • Vue项目通过宝塔部署之后,页面刷新后浏览器404页面
  • Java一一一简易图书管理系统
  • Ubuntu配置carla docker环境
  • 超越sd3!比肩Midjourney-v6?AI绘画大模型FLUX1.0详细评测与本地部署方法(附安装文件)
  • 帆软填报报表单元格根据其它单元格内容决定另外的单元格可筛选什么值
  • 一键浪漫的回忆:微软开源的修复工具!!【送源码】
  • 力扣-240.搜索二维矩阵(2)
  • Python推导式和生成器表达式
  • 比较支持向量机、AdaBoost、逻辑斯谛回归模型的学习策略与算法
  • Android顶部标题栏自定义,添加按钮
  • Spring Boot 整合 Dubbo3 + Nacos 2.4.0【进阶】+ 踩坑记录
  • 浙江省食品安全管理员题库及答案
  • C++ 几何算法 - 求两条直线交点
  • Linux操作系统简介
  • 【Python机器学习】回归——缩减系数来“理解”数据
  • 组件设计原则