首页 > 其他分享 >Codeforces 1354 D. Multiset(树状数组)

Codeforces 1354 D. Multiset(树状数组)

时间:2023-02-03 11:31:18浏览次数:48  
标签:cnt val int res Codeforces 1354 add query Multiset


Codeforces 1354 D. Multiset(树状数组)_树状数组


Codeforces 1354 D. Multiset(树状数组)_模板题_02

题意;

要你实现一个求第k大数的数据结构。
树状数组模板题。

AC代码:

const int N = 1e6 + 50;
int a[N];
int n, q;
void add(int p, int val)
{
while (p <= n)
{
a[p] += val;
p += lowbit(p);
}
}

int query(int p)
{
int res = 0, cnt = 0;
per(i, 20, 0)
{
if (res + (1 << i) <= n && cnt + a[res + (1 << i)] < p)
{
cnt += a[res + (1 << i)];
res += (1 << i);
}
}
return res + 1;
}

int main()
{
sdd(n, q);
rep(i, 1, n)
{
int val;
sd(val);
add(val, 1);
}
int cnt = n;
while (q--)
{
int val;
sd(val);
if (val > 0)
{
add(val, 1);
cnt++;
}
else
{
add(query(-val), -1);
cnt--;
}
}
if (!cnt)
puts("0");
else
pd(query(1));
return 0;
}


标签:cnt,val,int,res,Codeforces,1354,add,query,Multiset
From: https://blog.51cto.com/u_15952369/6035741

相关文章

  • codeforces 580C Kefa and Park (树上DFS)
    Description:Kefadecidedtocelebratehisfirstbigsalarybygoingtotherestaurant.Helivesbyanunusualpark.Theparkisarootedtreeconsistingof n ve......
  • CodeForces - 253E Table with Letters - 2
    Description:Let'sconsideranetworkprinterthatfunctionslikethat.Itstartsworkingattime0.Ineachseconditcanprintonepageofatext.Atsomemomen......
  • Codeforces1201 B Maximum Median (二分)
    Description:Youaregivenanarray aa of nn integers,where nn isodd.Youcanmakethefollowingoperationwithit:Chooseoneoftheelementsofthearray......
  • Codeforces Round #596 D
    找到a[i]*a[j]=x^k符合这个式子的有多少种组合。分解质因子来做就行了AC代码:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<s......
  • Codeforces-343D Water Tree(树链剖分)
    Description:MadscientistMikehasconstructedarootedtree,whichconsistsof n vertices.Eachvertexisareservoirwhichcanbeeitheremptyorfilledw......
  • Codeforces Round #596 B2. TV Subscriptions
    题意就是让你在N个数中找到D个连续的数,使这D个数中不同的数最小。hard数据较大,优化到nlogn才能过。具体怎么优化看代码吧AC代码:#include<cstdio>#include<cstring>......
  • Codeforces Round #596 C. p-binary
    给定N和p,让你找到满足2^x+p最少有多少不同的项。就把N转成二进制然后枚举P的个数就是答案,昨天特判没写好,今天早上起来发现被卡掉了。rank又出1000了。AC代码:#include<......
  • Educational Codeforces Round 75 D. Salary Changing(二分)
    题意就是:给n个人发工资,总钱数为s。每个人有一个工资范围。要求一个发工资方案,使得工资中位数最大,求这个中位数。考虑到中位数最大,于是我们可以二分。但是每个人的工资......
  • Educational Codeforces Round 75 C Minimize The Integer
    这道题的意思就是给出一个由数字组成的字符串,相邻的数字可以互换位置,但是如果相邻的为同奇同偶这样就不能交换。让我们求交换任意次数可以产生的最小数。这条限制就是说......
  • codeforces 595 C2. Good Numbers (hard version)
    给出Q组查询,每组给出一个N找到一个>=n的m,m可以分解成不同的3的幂次相加。可以看题意解释,就是转化为3^0,3^1,...,3^m,每个只能出现最多一次,但是可以不同组合,输出符合条件最......