【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 ...
随机推荐
- 国产中标麒麟Linux部署dotnet core 环境并运行项目 (二) 部署运行控制台项目
背景 在上一篇文章安装dotnet core,已经安装好dotnet core了.之前只是安装成功了dotnet, 输入dotnet --info,可以确认安装成功了,但是在运行代码时,还是报错了,本 ...
- windows下sorl安装
1. JDK要求 Solr 4.10 要求JDK版本必须是1.7或更高. 2. 下载 下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 下 ...
- java基础面试题:如何把一段逗号分割的字符串转换成一个数组? String s = "a" +"b" + "c" + "d";生成几个对象?
package com.swift; public class Douhao_String_Test { public static void main(String[] args) { /* * 如 ...
- NodeJS--exports和module.exports
继续迁移印象笔记中记录相关笔记,其实工作中遇到的很多问题当时解决了,后期就忘记了,多记录还是很有用的,好记性不如烂笔头嘛,以后要养成好习惯. NodeJS中 require 用来加载代码,而 expo ...
- list变set去重,set交集
set 取交集 并集 删除没有的元素 不会报错 remove 会报错 https://www.cnblogs.com/alex3714/articles/5717620.html
- Linux dmidecode命令
1.linux系统自带的dmidecode工具查询服务器硬件信息 dmidecode 用于获取服务器的硬件信息,通常是在不打开计算机机箱的情况下使用该命令来查找硬件详细信息 这个命令可以查看内存的几乎 ...
- 企业shell面试题及解答
1.面试题:使用for循环在/tmp目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串template,示例如下 aaesdffbnv_template.html 方 ...
- thinkphp 3.2.3 程序执行时序图
- BFS:CF356C-Compartments
C. Compartments time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- PAT Basic 1084
1084 外观数列 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ... 它从不等于 1 的数字 d 开始,序列的第 n+1 项是 ...