[Hdu6315]Naive Operations
题意:给定一个初始数组b和一个初始值全部为0的数组a,每次操作可以在给定的区间(l,r)内让a[i](l=<i<=r)加一,或者查询区间区间(l,r)中a[i]/b[i](l=<i<=r)(取整)的和。
可以知道,$\sum_{\frac{a_i}{b_i}}\le nlogn$,所以我们只要暴力找到需要修改的位置修改即可。。
代码:
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #define M 100010
- #define ls node<<1
- #define rs node<<1|1
- using namespace std;
- int n,q;
- int maxn[M<<],minn[M<<],cnt[M<<],tag[M<<],b[M];
- void update(int node)
- {
- minn[node]=min(minn[ls],minn[rs]);
- cnt[node]=cnt[ls]+cnt[rs];
- maxn[node]=max(maxn[ls],maxn[rs]);
- }
- void build(int node,int l,int r)
- {
- if(l==r) {minn[node]=b[l];return;}
- int mid=(l+r)/;
- build(ls,l,mid);
- build(rs,mid+,r);
- update(node);
- }
- void push(int node)
- {
- if(tag[node])
- {
- maxn[ls]+=tag[node];
- maxn[rs]+=tag[node];
- tag[ls]+=tag[node];
- tag[rs]+=tag[node];
- tag[node]=;
- }
- }
- void change(int node,int l,int r,int l1,int r1)
- {
- if(l1<=l&&r1>=r)
- {
- maxn[node]++;
- if(maxn[node]<minn[node])
- {
- tag[node]++;
- return;
- }
- if(l==r&&maxn[node]>=minn[node])
- {
- cnt[node]++;
- minn[node]+=b[l];
- return;
- }
- }
- int mid=(l+r)/;push(node);
- if(l1<=mid) change(ls,l,mid,l1,r1);
- if(r1>mid) change(rs,mid+,r,l1,r1);
- update(node);
- }
- int query(int node,int l,int r,int l1,int r1)
- {
- if(l1<=l&&r1>=r) return cnt[node];
- int mid=(l+r)/; push(node);
- int ans=;
- if(l1<=mid) ans+=query(ls,l,mid,l1,r1);
- if(r1>mid) ans+=query(rs,mid+,r,l1,r1);
- return ans;
- }
- int main()
- {
- while(~scanf("%d%d",&n,&q))
- {
- memset(maxn,,sizeof(maxn));
- memset(minn,,sizeof(minn));
- memset(cnt,,sizeof(cnt));
- memset(tag,,sizeof(tag));
- for(int i=;i<=n;i++) scanf("%d",&b[i]);
- build(,,n);
- while(q--)
- {
- int l,r;char s[];
- scanf("%s%d%d",s,&l,&r);
- if(s[]=='a') change(,,n,l,r);
- else printf("%d\n",query(,,n,l,r));
- }
- }
- return ;
- }
[Hdu6315]Naive Operations的更多相关文章
- HDU6315 Naive Operations(多校第二场1007)(线段树)
Naive Operations Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 502768/502768 K (Java/Other ...
- HDU-6315 Naive Operations//2018 Multi-University Training Contest 2___1007 (线段树,区间除法)
原题地址 Naive Operations Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 502768/502768 K (Java/ ...
- [HDU6315]Naive Operations(线段树+树状数组)
构造一个序列B[i]=-b[i],建一颗线段树,维护区间max, 每次区间加后再询问该区间最大值,如果为0就在树状数组中对应的值+1(该操作可能进行多次) 答案在树状数组中找 其实只用一颗线段树也是可 ...
- HDU6315 Naive Operations(线段树 复杂度分析)
题意 题目链接 Sol 这题关键是注意到题目中的\(b\)是个排列 那么最终的答案最多是\(nlogn\)(调和级数) 设\(d_i\)表示\(i\)号节点还需要加\(d_i\)次才能产生\(1\)的 ...
- HDU6315 Naive Operations 线段树
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门 原题目描述在最下面. Solution ...
- HDU-6315:Naive Operations(线段树+思维)
链接:HDU-6315:Naive Operations 题意: In a galaxy far, far away, there are two integer sequence a and b o ...
- HDU 6351 Naive Operations(线段树)
题目: http://acm.hdu.edu.cn/showproblem.php?pid=6315 Naive Operations Time Limit: 6000/3000 MS (Java/O ...
- hdu 6315 Naive Operations (2018 Multi-University Training Contest 2 1007)
Naive Operations Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 502768/502768 K (Java/Other ...
- hdu Naive Operations 线段树
题目大意 题目链接Naive Operations 题目大意: 区间加1(在a数组中) 区间求ai/bi的和 ai初值全部为0,bi给出,且为n的排列,多组数据(<=5),n,q<=1e5 ...
随机推荐
- git学习(4)远程库和分支管理
git学习(4)远程库和分支管理 1.1建立本地git库和远程库联系 我使用的是GitHub上的库,首先在GitHub上新建一个库,在建立与远程库的联系之前需要建立ssh key.建立ssh key可 ...
- 数据结构(java语言描述)
概念性描述与<数据结构实例教程>大同小异,具体参考:http://www.cnblogs.com/bookwed/p/6763300.html. 概述 基本概念及术语 数据 信息的载体,是 ...
- Exception in thread "main" java.lang.UnsupportedClassVersionError: * : Unsupported major.minor version 52.0 解决办法
Exception in thread "main" java.lang.UnsupportedClassVersionError: * : Unsupported major.m ...
- Zipline Development Guidelines
Development Guidelines This page is intended for developers of Zipline, people who want to contribut ...
- python pip命令技巧
确保本地开发环境,和线上一致性 1.导出当前解释器的模块pip3 freeze > requirements.txt 2.将这个文件requirements.txt,上传至服务器,在新的虚拟环境 ...
- Mysql索引长度和区分度
首先 索引长度和区分度是相互矛盾的, 索引长度太短,那么区分度就很低,吧索引长度加长,区分度就高,但是索引也是要占内存的,所以我们需要找到一个平衡点: 那么这个平衡点怎么来定? 比如用户表有个字段 ...
- Python3 格式化输出 %s & %d 等
1.打印字符串 print("My name is %s" %("Alfred.Xue")) #输出效果:My name is Alfred.Xue 2.打印整 ...
- 《闪存问题之READ DISTURB》总结
来自 http://www.ssdfans.com/?p=1778 闪存存在几个问题,影响着数据可靠性: 1.擦除次数,闪存擦除次数增多,会使隔离栅极的电化学键变弱. 2.data retention ...
- HDU2425:Hiking Trip(简单bfs,优先队列实现)
题目: 传送门 题意很简单就不解释了,水题一道. #include <iostream> #include <string.h> #include <stdio.h> ...
- django内置 Contenttypes 框架
一.什么是Django ContentTypes? 1.Django 包含一个ContentTypes 应用,它可以追踪安装在你的Django 项目里的所有应用,并提供一个高层次的.通用的接口用于与你 ...