[HNUOJ1140] Daily Division(树状数组+二分)
传送门:Daily Division
#include <bits/stdc++.h>
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
const int maxn = 1e5+5;
int n, q;
ll a[maxn], ft[maxn];int lowbit(int x)
{return x & -x;
}void update(int x, int val)
{while(x <= n){ft[x] += val;x += lowbit(x);}
}ll query(int x)
{ll ret = 0;while(x > 0){ret += ft[x];x -= lowbit(x);}return ret;
}ll getDiv(int pos)
{ll lsum = 0, rsum = 0, msum = 0;if(pos != 1)lsum = query(pos-1);if(pos != n)rsum = query(n) - query(pos);msum = query(pos) - query(pos-1);if(msum & 1){if(lsum <= rsum)++lsum;else++rsum;}return lsum-rsum;
}void read()
{cin >> n >> q;for(int i = 1; i <= n; ++i){cin >> a[i];update(i, a[i]);}
}void solve()
{int I, x;while(q--){cin >> I >> x;update(I+1, -(query(I+1)-query(I))); //清0update(I+1, x); //更新int l = 1, r = n;while(r-l > 1){int mid = l + ((r-l)>>1);if(getDiv(mid) <= 0)l = mid;elser = mid;}ll minDiv = INF, div[3];int ans = 0;if(l == 1)div[0] = INF;elsediv[0] = abs(getDiv(l-1));div[1] = abs(getDiv(l));if(l == n)div[2] = INF;elsediv[2] = abs(getDiv(l+1));for(int i = 0; i < 3; ++i)if(minDiv > div[i]){minDiv = div[i];ans = l-2+i;}cout << ans << endl;}
}int main()
{ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);read();solve();return 0;
}
[HNUOJ1140] Daily Division(树状数组+二分)相关推荐
- VK Cup 2012 Qualification Round 2 C. String Manipulation 1.0 线段树 or 树状数组+二分
http://codeforces.com/problemset/problem/159/C 题意: 给你一个字符串s,给出一个数k,k倍的s串组成新串str.然后给出n个操作,每个操作对应着pi,c ...
- P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]
题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地.这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突.也就是说,前一个 ...
- POJ2828 Buy Tickeys 树状数组+二分 线段树留坑。。。
题意:一堆人排队买票,告诉你一堆人的序号(序号的意思是插在"当前"第几个人的后面)和姓名(姓名用编号代替). 思路:线段树 或 树状数组+二分(自己还不会线段树,所以这里继续留坑) ...
- 树状数组 + 二分 - Query HDU - 4339
树状数组 + 二分 - Query HDU - 4339 题意: T组测试用例,每组给定两个长度分别为l1和l2的字符串s1,s2.有两种询问:①.1idic:将第id个字符串的第i个字符变成字符c. ...
- 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)
目录 最长上升子序列 一.朴素做法O(2n)O(2^n)O(2n) 二.优化做法O(nlogn)O(nlogn)O(nlogn) 三.例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列 ...
- POJ 2182 Lost Cows [树状数组+二分]
Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular di ...
- D. Multiset(树状数组 + 二分)
Multiset 可能更好的阅读体验 思路 二分 + 树状数组做法 我们发现每个数的范围是$ <= 1e6$的,所以可以直接在线操作,不用离散化离线操作. 这个时候我们的treetreetree ...
- CF1404C:Fixed Point Removal(离线)(树状数组二分)
解析 写了不少线段树上二分,原来树状数组上也是可以二分的 首先如果ai>ia_i>iai>i,那必然无法删除,下面只考虑ai<=ia_i<=iai<=i的情况 ...
- CF1446F-Line Distance【计算几何,树状数组,二分】
正题 题目链接:https://www.luogu.com.cn/problem/CF1446F 题目大意 给出nnn个点,求所有点对构成的直线中与原点距离第kkk小的距离 2≤n≤105,1≤k≤n ...
最新文章
- cytoscape插件bingo使用
- 清华构建新一代数据集NICO,定义图像分类新标准
- Math,random()返回区间内的随机数
- 蓝桥杯第五届决赛真题大全解(java版本)
- 启明云端技术社区之星--张梦玉
- vscode更改插件路径_vscode插件分享
- beego orm 删除不掉数据!!!
- StringBuilder内存碎片对性能的影响
- js 在线压缩混淆工具
- 【优化算法】混合蛙跳优化算法(SFLA)【含Matlab源码 1472期】
- 《问佛》——仓央嘉措
- 这五个方法能提高程序员工作效率
- VMware win7 x64虚拟机安装
- 06- 移动端APP兼容性测试以及APP兼容性测试手机选择与云测试技术
- css 按钮扩散效果,专治按钮效果不明显(扩散动画效果)
- 使用TSA包中的 beersales 数据集建立TAR模型
- 电压采样,输出有效值
- 透过镜头放大镜行业现状调研及趋势分析报告
- 计算机组成原理13-定点数的移位、加法与减法运算
- 计算贝努利(bernoulli)概型的MATLAB函数