#树状数组,离散#洛谷 3586 [POI2015]LOG
分析
考虑\(\geq s\)的部分最多取到\(s\),
设\(<s\)的总和为\(p\),个数为\(t\),
那么\(p+(n-t)*s\geq c*s\)就一定能取到
代码
#include <cstdio>
#include <cctype>
#include <algorithm>
#define rr register
using namespace std;
const int N=1000011;
struct rec{int x,y,z;}q[N];
typedef long long lll;
int n,m,b[N],a[N],tot;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
struct Tree_Array{
lll c[N];
inline void update(int x,int y){
for (;x<=tot;x+=-x&x) c[x]+=y;
}
inline lll query(int x){
rr lll ans=0;
for (;x;x-=-x&x) ans+=c[x];
return ans;
}
}cw,ct;
signed main(){
n=iut(),m=iut(),b[m+1]=0;
for (rr int i=1;i<=m;++i){
rr char c=getchar();
while (!isalpha(c)) c=getchar();
q[i]=(rec){iut(),iut(),c=='U'};
b[i]=q[i].y;
}
for (rr int i=1;i<=n;++i) a[i]=1;
sort(b+1,b+2+m),tot=unique(b+1,b+2+m)-b-1,ct.update(1,n);
for (rr int i=1;i<=m;++i) q[i].y=lower_bound(b+1,b+1+tot,q[i].y)-b;
for (rr int i=1;i<=m;++i)
if (q[i].z){
rr int t1=a[q[i].x],t2=q[i].y;
cw.update(t1,-b[t1]),ct.update(t1,-1),
cw.update(t2,b[t2]),ct.update(t2,1);
a[q[i].x]=q[i].y;
}else{
rr lll W=cw.query(q[i].y-1),C=n-ct.query(q[i].y-1);
puts((q[i].x-C)*b[q[i].y]<=W?"TAK":"NIE");
}
return 0;
}
#树状数组,离散#洛谷 3586 [POI2015]LOG的更多相关文章
- 树状数组【洛谷P3586】 [POI2015]LOG
P3586 [POI2015]LOG 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1 ...
- 模板:二维树状数组 【洛谷P4054】 [JSOI2009]计数问题
P4054 [JSOI2009]计数问题 题目描述 一个n*m的方格,初始时每个格子有一个整数权值.接下来每次有2种操作: 改变一个格子的权值: 求一个子矩阵中某种特定权值出现的个数. 输入输出格式 ...
- 【BZOJ】1818: [Cqoi2010]内部白点(树状数组+离散+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1818 这一题一开始我就看错了,bzoj的那个绝对值109简直坑人,应该是10^9,我直接写了个暴力. ...
- bzoj 5055: 膜法师 树状数组+离散
先枚举每一个数,看它前面有几个比它小,算一下和为sum1,后面有几个比它大,算一下和为sum2,对答案的贡献为A[i]*sum1*sum2. 离散化后,树状数组就可以了. 就是倒着一边,顺着一边,统计 ...
- HDU-4605 Magic Ball Game 树状数组+离散+dfs
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4605 题意:给一颗树,每个节点有个权值w[u],每个节点只有两个儿子或者没有儿子,从根节点放下一个小球 ...
- LightOJ 1085 - All Possible Increasing Subsequences 树状数组+离散
http://www.lightoj.com/volume_showproblem.php?problem=1085 题意:求一个序列的递增子序列个数. 思路:找规律可以发现,某个数作为末尾数的种类数 ...
- 洛谷 P3586 [POI2015]LOG
P3586 [POI2015]LOG 题目描述 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它 ...
- 洛谷P3586 [POI2015]LOG(贪心 权值线段树)
题意 题目链接 Sol 显然整个序列的形态对询问没什么影响 设权值\(>=s\)的有\(k\)个. 我们可以让这些数每次都被选择 那么剩下的数,假设值为\(a_i\)次,则可以\(a_i\)次被 ...
- hdu_5877_Weak Pair(离散+DFS+树状数组)
题目链接:hdu_5877_Weak Pair 题意: 给你一棵树,让你找有多少对满足那两个条件的weak pair 题解: 有人用Treap,我不会,然后我用树状数组+离散来替代Treap,用DFS ...
- BZOJ.4826.[AHOI/HNOI2017]影魔(树状数组/莫队 单调栈)
BZOJ LOJ 洛谷 之前看\(mjt\)用莫队写了,以为是一种正解,码了3h结果在LOJ T了没A= = 心态爆炸(upd:发现是用C++11(NOI)交的,用C++11交就快一倍了...) 深刻 ...
随机推荐
- Linux驱动开发笔记(四):设备驱动介绍、熟悉杂项设备驱动和ubuntu开发杂项设备Demo
前言 驱动的开发需要先熟悉基本概念类型,本篇讲解linux杂项设备基础,还是基于虚拟机ubuntu去制作驱动,只需要虚拟机就可以尝试编写注册杂项设备的基本流程. linux三大设备驱动 字符设 ...
- sql题目---day39
# 1.查询所有的课程的名称以及对应的任课老师姓名 #where select teacher.tname,course.cname from teacher,course where course. ...
- 【算法day1】复杂度和简单排序算法(1)
复杂度和简单排序算法 时间复杂度 以一个排序(选择排序)操作举例 假设我有一个数组,我要找出其中的最小值放到0的位置上 那么 第一次我会遍历数组中N个数(在0位置处),找出最小的数交换到0位置[看了( ...
- 第一百一十五篇: JS集合引用类型Map
好家伙,本篇为<JS高级程序设计>第六章"集合引用类型"学习笔记 1.Map ECMAScript6以前,在JavaScript中实现"键/值" ...
- 全表查询sql执行链路排查
问题描述: 发现有sql查询全表数据,慢查询语句,根据druid上的sql监控查看到. 主要根据标红的列确定问题sql. 点击进去可以看到详细sql信息. 问题排查目标: 发现这个语句高层调用方特别多 ...
- Linux查看文件大小、磁盘使用情况
1.显示磁盘的可用情况: df -h 2.显示文件夹大小 du -ka folder | sort -rnk 1 | head -n 10
- linux的简单使用
了解Linux的简单使用 Linux的安装 下载Linux Ubuntu版本和虚拟机VMware软件. 我已经提前下载好了,下载好的文件分享出来bd 这个是文件夹内的VMWare软件的注册码,安装完成 ...
- Rust 登上了开源头条「GitHub 热点速览」
抱歉!上周因为出月刊工作量比较大,所以「GitHub 热点速递」暂停了一期,必须要给守着更新的读者道个歉,以后每周二的「热点速递」会按时更新,下不为例. 说回本周的热门开源项目,Rust 语言可谓是出 ...
- 4时4态 加被动 例句:I will have been being done - will have be be do - 频率副词位置
4时4态 频率副词的用法和位置:放在实义动词之前.放在be 动词之后.放在情态动词之后. 频率副词的位置一般是放在实义动词之前.放在be 动词之后.放在情态动词之后.放在be动词之后:She is s ...
- Python下使用串口发送十六进制数据
import serial from time import sleep def recv(serial): while True: data = serial.read_all() if data ...