题意

给你一段长度为n(1 ≤ n ≤ 3·1e5)的序列,m (1 ≤ p ≤ 3·1e5)个询问,每次询问a,a+b,a+2b+...<=n的和

思路

一开始一直想也想不到怎么分,去维护哪些信息,看了题解才知道 其实分块不仅仅可以将一列序列分块,还可以将数据进行分块,下面讨论具体做法

首先这道题不是在线询问,可以离线做,先读入所有的询问,将询问从小到大排序
①当b<√n时,对于每一个b我们可以预处理出这样的一个数组sum[i],就是以i为起点间隔为b的序列和(可以用一个简单的dp求出来),然后O(1)查询,这么做的好处就是如果不同的询问a不同,b相同,经过排序我们就可以直接使用这个sum数组,时间复杂度为O(n√n)。
②当b≥√n时,直接暴力求和,时间复杂度为O(m√n)
所以总时间复杂度为O((m+n)√n)

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=3e5+;
typedef long long ll;
ll a[maxn];
struct node{
int a,b,id;
bool operator<(const node &s) const
{
return b<s.b;
}
}b[maxn];
ll ans[maxn];
ll sum_b[maxn];
int main()
{
int n,m;
scanf("%d",&n);
int bl=sqrt(n);
for(int i=;i<=n;i++)
scanf("%I64d",&a[i]);
scanf("%d",&m);
for(int i=;i<=m;i++){
b[i].id=i;
scanf("%d%d",&b[i].a,&b[i].b);
}
sort(b+,b++m);
b[].b=;
for(int i=;i<=m;i++){
if(b[i].b>=bl){
ans[b[i].id]=;
for(int k=b[i].a;k<=n;k+=b[i].b)
ans[b[i].id]+=a[k];
}
else{
if(b[i].b==b[i-].b){
ans[b[i].id]=sum_b[b[i].a];
}
else{
for(int j=n;j>=;j--)
if(j+b[i].b>n)
sum_b[j]=a[j];
else
sum_b[j]=sum_b[j+b[i].b]+a[j];
ans[b[i].id]=sum_b[b[i].a];
}
}
}
for(int i=;i<=m;i++)
printf("%I64d\n",ans[i]);
return ;
}

(分块暴力)Time to Raid Cowavans CodeForces - 103D的更多相关文章

  1. CodeForces 103D Time to Raid Cowavans 询问分块

    Time to Raid Cowavans 题意: 询问 下标满足 a + b * k 的和是多少. 题解: 将询问分块. 将b >= blo直接算出答案. 否则存下来. 存下来之后,对于每个b ...

  2. Codeforces Beta Round #80 (Div. 1 Only) D. Time to Raid Cowavans 离线+分块

    题目链接: http://codeforces.com/contest/103/problem/D D. Time to Raid Cowavans time limit per test:4 sec ...

  3. Codeforces Beta Round #13 E. Holes 分块暴力

    E. Holes Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/13/problem/E Des ...

  4. Codeforces 1290D - Coffee Varieties(分块暴力+完全图的链覆盖)

    Easy version:Codeforces 题面传送门 & 洛谷题面传送门 Hard version:Codeforces 题面传送门 & 洛谷题面传送门 发现自己交互题烂得跟 s ...

  5. Codeforces#86D Powerful array(分块暴力)

    Description An array of positive integers a1, a2, ..., an is given. Let us consider its arbitrary su ...

  6. CodeForces 103 D Time to Raid Cowavans

    Time to Raid Cowavans 题意:一共有n头牛, 每头牛有一个重量,m次询问, 每次询问有a,b 求出 a,a+b,a+2b的牛的重量和. 题解:对于m次询问,b>sqrt(n) ...

  7. Codeforces103D - Time to Raid Cowavans

    Portal Description 给出长度为\(n(n\leq3\times10^5)\)的序列\(\{a_n\}\),进行\(q(q\leq3\times10^5)\)次询问:给出\(x,y\) ...

  8. CodeForces 103D Time to Raid Cowavans 分块+dp

    先对b从小到大sort,判断b是不是比sqrt(n)大,是的话就直接暴力,不是的话就用dp维护一下 dp[i]表示以nb为等差,i为起点的答案,可以节省nb相同的情况 #include<bits ...

  9. Codeforces Beta Round #80 (Div. 1 Only) D. Time to Raid Cowavans 分块

    D. Turtles Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/103/problem/D ...

随机推荐

  1. 用es5实现模板字符串

    废话不多说,主要是利用正则表达式replace+eval动态取值(纯属娱乐) String.prototype.myReplace = function(){ return this.replace( ...

  2. vue-learning:20 - js - 区别:filters / data / computed / watch / methods

    区别:filters / data / computed / watch / methods 在配置对象options中,filters/data/computed/watch/methods的每一项 ...

  3. HDU6579 2019HDU多校训练赛第一场1002 (线性基)

    HDU6579 2019HDU多校训练赛第一场1002 (线性基) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6579 题意: 两种操作 1.在序列末 ...

  4. k8s的网络方案对比

    如下图,三台虚拟机k8s-master.k8s-node-1.k8s-node-2组成k8s集群,网络拓扑和节点IP分配如下图: 一.flannel组网方案 https://github.com/co ...

  5. Java面向对象程序设计第9章1-9

    Java面向对象程序设计第9章1-9 1. 线程和进程的联系和区别是什么? 联系: 一个进程可以包括多个线程. 区别: 进程: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统 ...

  6. Alibaba Cloud Toolkit 使用心得(IDEA版)

    一.安装插件 确保 IntelliJ IDEA 在 2018.1 或更高版本 打开 Settings - Plugins 搜索安装 Alibaba Cloud Toolkit 二.配置环境 Deplo ...

  7. 如何把对象手动注入Spring容器并实现依赖注入

    将对象注入到Spring容器并实现依赖注入 public class UserDao { @Resource AccountService accountService; public void pr ...

  8. 如何保存HTTPrequestbase和CloseableHttpResponse

    在测试过程中,有一个重要的工作就是保存记录"现场",以方便开发人员更快发现BUG解决问题.在接口测试中更是如此,如果开发人员能够根据BUG的信息直接复现请求,是一件很方便的事情.为 ...

  9. $Poj1934\ Trip$ 线性$DP+$搜索

    Luogu Description 爱丽丝和鲍伯想去度假,他们每个人都制定了一个参观城市的清单,该地区正好有26个城市,因此它们被编码为小写字母“a”到“z”.清单上可能重复出现某个城市.因为他们想一 ...

  10. appium获取toast和操作webview实例

    从testerhome上看到很多测试同学分享了toast的获取方式,其中大部分是java版本的,但也有个python版本的:Appium1.7.2 android toast 消息测试 Appium获 ...