ZOJ-3279 Ants 树状数组 + 二分
题目链接:
https://cn.vjudge.net/problem/ZOJ-3279
题目大意:
有1到n 那个level 每一个level有a[i]只蚂蚁
两种操作
p a b 把第a个level的蚂蚁数量改成b
q a 查询第a只蚂蚁在哪个level里。
解题思路:
用树状数组动态维护前缀和,二分查找第a个蚂蚁即可
要用printf,不然会超时
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + ;
int tree[maxn], n, a[maxn];
int lowbit(int x)
{
return (x & (-x));
}
void add(int x, int d)//将x下标的值加上d
{
while(x <= n)
{
tree[x] += d;
x += lowbit(x);
}
}
int sum(int x)
{
int tot = ;
while(x)
{
tot += tree[x];
x -= lowbit(x);
}
return tot;
} int main()
{
while(scanf("%d", &n) != EOF)
{
memset(a, , sizeof(a));
memset(tree, , sizeof(tree));
for(int i = ; i <= n; i++)
{
scanf("%d", &a[i]);
add(i, a[i]);
}
int m, x, y;
scanf("%d", &m);
char s[];
while(m--)
{
scanf("%s", s);
if(s[] == 'p')
{
scanf("%d%d", &x, &y);
add(x, -a[x]);//单点修改
add(x, y);
a[x] = y;
}
else if(s[] == 'q')
{
scanf("%d", &x);
int l = , r = n, ans;
while(l <= r)
{
int m = (l + r) / ;
if(sum(m) >= x)ans = m, r = m - ;
else l = m + ;
}
printf("%d\n", ans);
}
}
}
return ;
}
ZOJ-3279 Ants 树状数组 + 二分的更多相关文章
- POJ 2828 Buy Tickets (线段树 or 树状数组+二分)
题目链接:http://poj.org/problem?id=2828 题意就是给你n个人,然后每个人按顺序插队,问你最终的顺序是怎么样的. 反过来做就很容易了,从最后一个人开始推,最后一个人位置很容 ...
- TZOJ 4602 高桥和低桥(二分或树状数组+二分)
描述 有个脑筋急转弯是这样的:有距离很近的一高一低两座桥,两次洪水之后高桥被淹了两次,低桥却只被淹了一次,为什么?答案是:因为低桥太低了,第一次洪水退去之后水位依然在低桥之上,所以不算“淹了两次”.举 ...
- POJ 2182 Lost Cows 【树状数组+二分】
题目链接:http://poj.org/problem?id=2182 Lost Cows Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- 树状数组+二分||线段树 HDOJ 5493 Queue
题目传送门 题意:已知每个人的独一无二的身高以及排在他前面或者后面比他高的人数,问身高字典序最小的排法 分析:首先对身高从矮到高排序,那么可以知道每个人有多少人的身高比他高,那么取较小值(k[i], ...
- P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]
题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地.这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突.也就是说,前一个 ...
- The Stream of Corning 2( 权值线段树/(树状数组+二分) )
题意: 有两种操作:1.在[l,r]上插入一条值为val的线段 2.问p位置上值第k小的线段的值(是否存在) 特别的,询问的时候l和p合起来是一个递增序列 1<=l,r<=1e9:1< ...
- 牛客多校第3场 J 思维+树状数组+二分
牛客多校第3场 J 思维+树状数组+二分 传送门:https://ac.nowcoder.com/acm/contest/883/J 题意: 给你q个询问,和一个队列容量f 询问有两种操作: 0.访问 ...
- ZOJ 3635 Cinema in Akiba (第一次组队) 树状数组+二分
Cinema in Akiba Time Limit: 3 Seconds Memory Limit: 65536 KB Cinema in Akiba (CIA) is a small b ...
- ZOJ - 3635 Cinema in Akiba(树状数组+二分)
题意:已知有n个人,从第一个人开始每个人被安排在第ai个空座上,有m组询问,问某人所坐的位置. 分析: 1.用树状数组维护空座的个数,方法: 将所有的空座初始化为1,sum(x)则表示从座位1到座位x ...
随机推荐
- [转]log4net 发布到生产环境不写日志的解决方法--使用 NLog日志
本文转自:http://www.cnblogs.com/weiweictgu/p/5848805.html 1.升级到log4net的最新版 PM下执行 Install-Package log4net ...
- sublime text3 JS语法检测插件
首先ctrl+shift+P用包管理器安装sublimeLinter和sublimeLinter-jshint 前往node官网下载nodejs并安装 安装完node后打开命令行输入npm insta ...
- hdu 1397 (素数判定)
一开始提交了这个,果断TLE #include <cstdio> #include <iostream> #include <string> #include &l ...
- lvarchar类型对表结构变更影响
informix中lvarchar类型设计用于存储中度长度的字符数据(短的常用varchar类型.特别长的字符可用text类型).其默认长度2048byte,最大长度32739byte,是一种可变长度 ...
- 深入分析ReentrantLock公平锁和非公平锁的区别 (转)
在ReentrantLock中包含了公平锁和非公平锁两种锁,通过查看源码可以看到这两种锁都是继承自Sync,而Sync又继承自AbstractQueuedSynchronizer,而AbstractQ ...
- Aizu2292 Common Palindromes
题意 我也不知道哪里来的OJ \(vjudge\) 上的 给定两个字符串 \(S,T\) ,询问 \((i,j,k,l)\) 这样的四元组个数 使得 \(S[i,j],T[k,l]\) 是相等的回文串 ...
- svg矢量图标在html中的使用, (知识点:1.通过h5中的css实现点击变色,2.一个svg文件包含多个图标)
svg矢量文件体积小,不变形,比传统的png先进,比现在流行的icon-font灵活.然而在使用过程中还是遇到了很多坑.今天花了一天时间把经验整理出来,以供后来者借鉴.如果您从本文收益,请留言mark ...
- 已有Web项目添加Maven支持
IDE:MyEclipse 当我们在现有的Web开发项目中集成 Maven 的时候,需要修改以下几个地方: 1.将以下代码拷贝到工程根路径下的 .project 文件中的 <buildSpec& ...
- Spring Data MongoDB 级联操作
DBRef 方式关联 DBRef 就是在两个Collection之间定义的一个关联关系,暂不支持级联的保存功能 例子:一个Person对象有多个Book对象,一对多关系 实体Person public ...
- 状态开关(ToggleButton)
状态开关(ToggleButton): 常用属性:isChecked(是否被选中,如true) 监听:1.监听方法:setOnCheckedChangeListener 2.监听器:CompoundB ...