「CF103D」 Time to Raid Cowavans【分块】
题目连接
- https://codeforces.com/problemset/problem/103/D
题意
- 就是给你一个数组 a a a,多组询问,魅族询问给两个数 x x x和 y y y,求 a x + a x + y + a x + 2 ∗ y + . . . a_x+a_{x+y}+a_{x+2*y}+... ax+ax+y+ax+2∗y+...一直加直到 x + k ∗ y > n x+k*y>n x+k∗y>n
题解
- 很简单而且常见的套路题
- 考虑分块,当 y > n y>\sqrt n y>n 时,暴力计算结果,否则记录下这个询问【需要离线,不然空间开不下】,也就是枚举所有小于等于 n \sqrt n n 的查询,然后O(n)处理出从所有位置开始的答案,然后更新所有相关查询
- 所以总时间复杂度为 O ( n ) O(\sqrt n) O(n )
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=3e5+10;
const int smaxn=600;
int n,m,a[maxn],l,r,block;
long long sum[maxn],ans[maxn];
struct query{int id,a;};
vector<query> vec[smaxn];int main()
{scanf("%d",&n);block=sqrt(n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);scanf("%d",&m);for(int i=1;i<=m;i++) {scanf("%d %d",&l,&r);if(r>block) for(int j=l;j<=n;j+=r) ans[i]+=a[j];else vec[r].push_back(query{i,l}); }for(int j=1;j<=block;j++) {if(vec[j].size()) {for(int i=n;i>=1;i--) sum[i]=a[i]+(i+j>n?0:sum[i+j]);for(auto k:vec[j]) ans[k.id]=sum[k.a];}}for(int i=1;i<=m;i++) printf("%lld\n",ans[i]);
}
「CF103D」 Time to Raid Cowavans【分块】相关推荐
- CodeForces 103D Time to Raid Cowavans 分块+dp
先对b从小到大sort,判断b是不是比sqrt(n)大,是的话就直接暴力,不是的话就用dp维护一下 dp[i]表示以nb为等差,i为起点的答案,可以节省nb相同的情况 #include<bits ...
- 如何理性的调整「rwnd」和「cwnd」的大小
很多人常常对TCP优化有一种雾里看花的感觉,实际上只要理解了TCP的运行方式就能掀开它的神秘面纱.Ilya Grigorik 在「High Performance Browser Networking ...
- 「BZOJ4763」雪辉
「BZOJ4763」天野雪辉 题目大意:有一棵 \(n\) 个点的树,树上每一个点有权值 \(a_i \leq 30000\) ,每次询问给出若干路径,求出这些路径的并上面的不同颜色数与 \(mex\ ...
- 用群晖筑建音乐之「家」
创意从业者的灵感总是随时迸发, 一段简短的旋律就有可能谱成一首经典歌曲, 而这个过程 不仅需要才华.学习.刻苦- 还需要-- 方便保存所有这些灵感的 「工具」 群晖NAS为音乐爱好者或是音乐从业者打造 ...
- 如何让 PowerPoint 幻灯片「高大上」?
转自:http://www.zhihu.com/question/22718708?utm_campaign=official_account&utm_source=weibo&utm ...
- 「紫禁之巅」四大图神经网络架构
近年来,人们对深度学习方法在图数据上的扩展越来越感兴趣.在深度学习的成功推动下,研究人员借鉴了卷积网络.循环网络和深度自动编码器的思想,定义和设计了用于处理图数据的神经网络结构.图神经网络的火热使得各 ...
- 「实战」南京房价的秘密——小区价格篇「2」
「实战」南京房价的秘密--准备篇 「实战」南京房价的秘密--小区价格篇「1」 案例二:南京历年小区建成情况-折线图 # 计算南京历年的小区建成数量 Jianzhu_tmp = Xiaoqu[" ...
- linux 增加自动恩物,「4bays」窮人備份恩物! Synology DiskStation 418
Synology DiskStation 418 處於數據幾何級增長及病毒肆虐的時代,資料備份相信對企業.家庭或個人用戶應該並不陌生,或許面對過加密病毒或硬碟磁區損壞的用家應更為深刻,而 Synolo ...
- 「GRUB」- 在BIOS系统上的GRUB引导 @20210221
本文分为两部分: * BIOS + MBR + GRUB* BIOS + GPT + GRUB 这两种模式下有所区别,下面会一层层的解释这两种方式.通常GPT与UEFI一起使用,因为UEFI只能使用G ...
最新文章
- java aqs源码_Java-AQS源码详解(细节很多!)
- svn在linux上的安装
- Ubuntu10下MySQL搭建Amoeba_读写分离
- Python 【第十三章】 Django 之 FORM
- 区块链教程Fabric1.0源代码分析Chaincode(链码)体系总结
- 自己动手实现自旋锁(spinlock)
- vi is failed with error E382: Cannot write, 'buftype' option is set in Linux
- python文件路径过滤器_SUMO入门(八) - 从Python引入TraCI接口
- iis mysql_Windows10本地搭建IIS+PHP+MYSQL+phpMyAdmin运行环境图文教程(也可用于服务器)...
- 【今日CV 视觉论文速览】28 Nov 2018
- stm32f103c8t6 AD DMA连续采集8个通道
- 怎样改动、扩展并重写Magento代码
- 【MVC+MySQL+EntityFramework】查询性能优化笔记
- 谈谈金融行业的开源风险管理
- 重磅!!Redis 6.0.0 已发布,有史以来改变最大的版本
- 12. MySQL 函数
- 学习java能干什么?学习java能做哪些工作?
- 自定义加密cookie加盐密码
- 计算机网络——ALOHA协议
- Android Studio-unity腾讯TiM(即时通信)使用