【CCF】除法 树状数组
【AC】
#include<iostream>
#include<math.h>
#include<cstring> using namespace std; typedef long long LL; int N,M;
int type,l,r,v;
int A[+];
LL TreeArr[+];
int lowbit(int i)
{
return i&(-i);
} void toValue(int i,int num)
{
while(i<=N)
{
TreeArr[i] += num;
i += lowbit(i);
}
} LL sum(int i)
{
LL total = ;
while(i != )
{
total += TreeArr[i];
i -= lowbit(i);
}
return total;
} int main(){ cin>>N>>M;
memset(TreeArr,,sizeof(TreeArr));
for(int j=; j<=N; j++){
cin>>A[j];
toValue(j, A[j]);
}
while(M--){
cin>>type;
if(type==){
cin>>l>>r>>v;
if(v==) continue;
for(int i=l; i<=r; i++){
if(A[i]>=v&&A[i]%v==){
toValue(i, A[i]/v-A[i]);
A[i] /= v;
}
}
}else if(type==){
cin>>l>>r;
cout<< sum(r) - sum(l-)<<endl;
}
}
return ;
}
【90分】
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<queue>
#include<map>
using namespace std;
typedef long long ll;
const int maxn=1e5+;
ll a[maxn];
ll tree[maxn];
int n,m;
int lowbit(int x){
return x&(-x);
}
void add(int k,ll x){
while(k<=n){
tree[k]+=x;
k+=lowbit(k);
}
}
ll query(int k){
ll res=;
while(k){
res+=tree[k];
k-=lowbit(k);
}
return res;
}
void init(){
memset(tree,,sizeof(tree));
}
int main(){
while(~scanf("%d%d",&n,&m)){
init();
for(int i=;i<=n;i++){
scanf("%lld",&a[i]);
add(i,a[i]);
}
int opt,l,r;
ll v;
for(int i=;i<=m;i++){
scanf("%d%d%d",&opt,&l,&r);
if(opt==){
scanf("%lld",&v);
if(v==) continue;
for(int j=l;j<=r;j++){
if(a[j]>=v&&a[j]%v==){
add(j,a[j]/v-a[j]);
a[j]/=v;
}
}
}else{
ll ans=query(r)-query(l-);
printf("%lld\n",ans);
}
}
}
return ;
}
【CCF】除法 树状数组的更多相关文章
- 【HDU4947】GCD Array(莫比乌斯反演+树状数组)
点此看题面 大致题意: 一个长度为\(n\)的数组,实现两种操作:将满足\(gcd(i,k)=d\)的\(a_i\)加上\(v\),询问\(\sum_{i=1}^xa_i\). 对于修改操作的推式子 ...
- inline void 树状数组神奇感悟【雾
才发现扫描线可以用树状数组搞... 致远星患者 (另外根据这篇博文的内容怎么越来越感觉自己往 PJ 入门靠拢了...) 还有一点,咱把树状数组当做线段树来康的话其实一切都会很清晰,这个来张四合一的图: ...
- neuoj1472 yuki的氪金之旅(倒置树状数组
这题一直re不造为啥..后来yww大神把树状数组“倒过来”就过了,倒过来的好处是算sum(d[i]+1)就行,不涉及除法,不用求逆元. 题意:初始手牌颜值是0,一共抽卡n次,第i次抽卡有pi的概率能抽 ...
- 牛客网暑期ACM多校训练营(第五场) F - take —— 期望+树状数组+逆元
看到一篇好的博客特意转出来观摩大佬:转:https://blog.csdn.net/greybtfly/article/details/81413526 题目大意:给n个箱子排成一排,从头到尾按顺序依 ...
- 康拓展开 & 逆康拓展开 知识总结(树状数组优化)
康拓展开 : 康拓展开,难道他是要飞翔吗?哈哈,当然不是了,康拓具体是哪位大叔,我也不清楚,重要的是 我们需要用到它后面的展开,提到展开,与数学相关的,肯定是一个式子或者一个数进行分解,即 展开. 到 ...
- 清北学堂—2020.1提高储备营—Day 2 afternoon(线段树、树状数组)
qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 ...
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- bzoj1878--离线+树状数组
这题在线做很麻烦,所以我们选择离线. 首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置. 然后对与每种颜色第一次出现的位置x,将a[x]++. 将每个询问按左端点排序,再从左往右扫, ...
- codeforces 597C C. Subsequences(dp+树状数组)
题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...
随机推荐
- 爬虫学习(五)——使用handler管理器对象进行数据爬取的步骤
# 使用管理器对象进行爬取数据的步骤 import urllib.requesturl = "https://www.baidu.com/"# 创建handler的管理器对象han ...
- mysql 查询出 n小时 以前的数据
select * FROM biaoming WHERE TIMESTAMPDIFF(SECOND ,CREATE_TIME,now() ) > 3*60*60
- Linux-SSH远程登陆
SSH是什么 Secure Shell 安全外壳协议 建立在应用层基础上的安全协议 可靠.转为远程登陆会话和其他网络提供安全性的协议 SSH客户端是用于多种平台 服务器安装SSH服务 安装:yum i ...
- python之2.x与3.x区别(仅限于基础)
因为看的是python2.x的书籍.用的是python 3.7.所以先把两者的区别记录一下,仅限于基础. 1.input python3.0之后,不区分input()和raw_input(),统一为i ...
- docker安装后无法启动问题
问题报错: Error starting daemon: Error initializing network controller: list bridge addresses failed: no ...
- PHP实现消息推送
我们做web的时候偶尔会遇到消息推送,如图示例(红框位置) 当我们遇到这种功能要如何开发呢?下边将我了解的两种方法整理一下: 一.ajax轮询,定时去请求服务器数据 通过观察thinkphp官网貌似也 ...
- 调用python-nmap实现扫描局域网存活主机
使用环境:Raspberry 3b+ +netifaces+python-nmap+nmap 调用netifaces自动获取ip地址: def get_gateways(): return netif ...
- django之路由分发
路由分发决定哪一个路由由哪一个视图函数来处理. 注意:django2.0里的re_path和django1.0里的url除了名字不一样,其他都一样. 简单配置 from django.urls imp ...
- vncserver 启动停止方式
vnc启停方式:vncserver :1 ; vncserver -kill :1
- Linux下 导入导出数据库
1.怎么找到mysql下的bin? 1.1首先我在网上百度了一些Linux下如何导入导出数据.基本都是用mysqldump命令,但是如果没有到指定目录 下,执行这个命令是没有用的.一开始我还以为要在m ...