传送门: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(树状数组+二分)相关推荐

  1. 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 ...

  2. P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]

    题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地.这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突.也就是说,前一个 ...

  3. POJ2828 Buy Tickeys 树状数组+二分 线段树留坑。。。

    题意:一堆人排队买票,告诉你一堆人的序号(序号的意思是插在"当前"第几个人的后面)和姓名(姓名用编号代替). 思路:线段树 或 树状数组+二分(自己还不会线段树,所以这里继续留坑) ...

  4. 树状数组 + 二分 - Query HDU - 4339

    树状数组 + 二分 - Query HDU - 4339 题意: T组测试用例,每组给定两个长度分别为l1和l2的字符串s1,s2.有两种询问:①.1idic:将第id个字符串的第i个字符变成字符c. ...

  5. 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)

    目录 最长上升子序列 一.朴素做法O(2n)O(2^n)O(2n) 二.优化做法O(nlogn)O(nlogn)O(nlogn) 三.例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列 ...

  6. POJ 2182 Lost Cows [树状数组+二分]

    Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular di ...

  7. D. Multiset(树状数组 + 二分)

    Multiset 可能更好的阅读体验 思路 二分 + 树状数组做法 我们发现每个数的范围是$ <= 1e6$的,所以可以直接在线操作,不用离散化离线操作. 这个时候我们的treetreetree ...

  8. CF1404C:Fixed Point Removal(离线)(树状数组二分)

    解析 写了不少线段树上二分,原来树状数组上也是可以二分的 首先如果ai>ia_i>iai​>i,那必然无法删除,下面只考虑ai<=ia_i<=iai​<=i的情况 ...

  9. CF1446F-Line Distance【计算几何,树状数组,二分】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1446F 题目大意 给出nnn个点,求所有点对构成的直线中与原点距离第kkk小的距离 2≤n≤105,1≤k≤n ...

最新文章

  1. cytoscape插件bingo使用
  2. 清华构建新一代数据集NICO,定义图像分类新标准
  3. Math,random()返回区间内的随机数
  4. 蓝桥杯第五届决赛真题大全解(java版本)
  5. 启明云端技术社区之星--张梦玉
  6. vscode更改插件路径_vscode插件分享
  7. beego orm 删除不掉数据!!!
  8. StringBuilder内存碎片对性能的影响
  9. js 在线压缩混淆工具
  10. 【优化算法】混合蛙跳优化算法(SFLA)【含Matlab源码 1472期】
  11. 《问佛》——仓央嘉措
  12. 这五个方法能提高程序员工作效率
  13. VMware win7 x64虚拟机安装
  14. 06- 移动端APP兼容性测试以及APP兼容性测试手机选择与云测试技术
  15. css 按钮扩散效果,专治按钮效果不明显(扩散动画效果)
  16. 使用TSA包中的 beersales 数据集建立TAR模型
  17. 电压采样,输出有效值
  18. 透过镜头放大镜行业现状调研及趋势分析报告
  19. 计算机组成原理13-定点数的移位、加法与减法运算
  20. 计算贝努利(bernoulli)概型的MATLAB函数

热门文章

  1. 拓扑容差如何修改_如何在CAD中通过设置容差参数对多段线进行自动修复重构
  2. 大屏联屏发布系统解决方案
  3. 【Adobe】怎样给音频升降调?
  4. 关于随机数,真随机,伪随机
  5. dell emc isilon解决添加AD域后有时间不同步警告
  6. 小白calculator
  7. 大型web系统数据缓存设计
  8. sendgrid html text,使用SendGrid发送电子邮件
  9. Sam-ba 2.12在win7上的安装
  10. 12个成功案例,告诉你提升客户体验新方法!