博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URAL 2062 Ambitious Experiment(分块)
阅读量:4510 次
发布时间:2019-06-08

本文共 673 字,大约阅读时间需要 2 分钟。

 

【题目链接】 

 

【题目大意】

  给出两个操作,操作一给出区间[l,r],对l到r中的每一个下标i,

  i,2*i,3*i……位置都增加x,操作二要求查询一个位置的当前值

 

【题解】

  在修改的时候,我们将增量只标识在i上,查询的时候,查询下标的因子和即可。

  考虑到这种查询方法需要sqrt(n)枚举判断因子,用二叉数据结构可能会超时,
  因此我们用分块nsqrt(n)修改,O(1)查询特定位置。

 

【代码】

#include 
#include
#include
#include
using namespace std;typedef long long LL;const int MAX_SIZE=550,MAX_N=300010;LL block[MAX_SIZE],u[MAX_SIZE][MAX_SIZE];int n,m,a[MAX_N],op,x,l,r,size;void add(int l,int r,int v){ int L=l/size,R=r/size; if(L==R)for(int i=l%size;i<=r%size;i++)u[L][i]+=v; else{ for(int i=l%size;i

转载于:https://www.cnblogs.com/forever97/p/ural2062.html

你可能感兴趣的文章
suggestion开发小结以及 对键盘事件的总结(针对中文输入法状态)
查看>>
Nio Client
查看>>
数据库 chapter 16 XML数据库
查看>>
spring mvc jsp运行不起来的问题
查看>>
大数据概述
查看>>
SpringBoot 密码MD5加密
查看>>
Mac MySQL启动不了解决办法(MySQL卸载重新安装教程)
查看>>
连通块
查看>>
servlet.txt笔记
查看>>
jquery设置select选中
查看>>
今天说一下DML触发器的顺序
查看>>
Memcached学习(一)--网络模型
查看>>
FragmentTransaction add 和 replace 区别 转
查看>>
jQuery 效果方法
查看>>
STM32物联网通信WIFI
查看>>
java反射案例详解
查看>>
MAGENTO 与 reindexer
查看>>
数字,字符串,列表及其内置方法
查看>>
iOS遍历数组的同时删除元素
查看>>
小强的HTML5移动开发之路(16)——神奇的拖放功能
查看>>