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

哏号分治,CF103D - Time to Raid Cowavans

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

103D - Time to Raid Cowavans


二、解题报告

1、思路分析

想了半天数据结构最终选择根号分治

我们考虑 大于 550 的公差直接暴力

小于550 的公差的所有询问,我们直接计算该公差后缀和,对于该公差所有询问统一处理

2、复杂度

时间复杂度: O(N\sqrt{N})空间复杂度:O(Q + \sqrt{N})

3、代码详解

 ​
#include <bits/stdc++.h>
using i64 = long long;
using i128 = __int128;
using PII = std::pair<int, int>;
const int inf = 1e9 + 7, P = 998244353;void solve() {int n;std::cin >> n;std::vector<i64> w(n);for (int i = 0; i < n; i ++ ) std::cin >> w[i];int bound = 500;int p;std::cin >> p;std::vector<std::vector<PII>> q(bound);std::vector<i64> ans(p);for (int i = 0, a, b; i < p; i ++ ) {std::cin >> a >> b;-- a;if (b >= bound) {i64& s = ans[i];for (int j = a; j < n; j += b)s += w[j];}elseq[b].push_back( { a, i } );}for (int i = 1; i < bound; i ++ ) {if (q[i].size()) {std::vector<i64> acc(n + i);for (int j = n - 1; j >= 0; j -- ) {acc[j] = acc[j + i] + w[j];}std::cout << '\n';for (auto [j, id] : q[i])ans[id] = acc[j];}}for (i64 x : ans) std::cout << x << '\n';
}int main(int argc, char** argv) {std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);int _ = 1;// std::cin >> _;while (_ --)solve();return 0;
}

http://www.lryc.cn/news/392273.html

相关文章:

  • 基于深度学习的图像背景剔除
  • Python使用(...)连接字符串
  • 鸿蒙:1.入门
  • 【matlab】智能优化算法——求解目标函数
  • 不改代码,实现web.config或app.config的连接字符串加密解密
  • Python创建MySQL数据库
  • 【C++】unordered系列容器的封装
  • matlab 超越椭圆函数图像绘制
  • 本地文件同步上传到Gitee远程仓库
  • RESTful Web 服务详解
  • 【ARMv8/v9 GIC 系列 5.3 -- 系统寄存器对中断的处理】
  • MUNIK解读ISO26262--系统架构
  • STM32第十五课:LCD屏幕及应用
  • Java--继承
  • Github与本地仓库建立链接、Git命令(或使用Github桌面应用)
  • c++之旅第十一弹——顺序表
  • 深入了解 PXE:定义、架构、原理、应用场景及常见命令体系
  • 《每天5分钟用Flask搭建一个管理系统》第9章:API设计
  • CCM的作用及原理
  • 10.09面试题目记录
  • 14-29 剑和诗人3 – 利用知识图谱增强 LLM 推理能力
  • 【代码大全2 选读】看看骨灰级高手消灭 if-else 逻辑的瑞士军刀长啥样
  • 深度学习 --- stanford cs231学习笔记八(训练神经网络之dropout)
  • 【C++】 解决 C++ 语言报错:Undefined Reference
  • 【博士每天一篇文献-算法】Adult neurogenesis acts as a neural regularizer
  • 在Spring Boot项目中引入本地JAR包的步骤和配置
  • Android Studio中使用命令行gradle查看签名信息
  • 昇思25天学习打卡营第5天 | 神经网络构建
  • Web缓存—Nginx和CDN应用
  • Linux 端口