HDU1899 Sum the K-th's(树状数组)
枚举,每次增加点,删除点
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
#include<utility>
using namespace std;
typedef long long LL;
const int N = , INF = 0x3F3F3F3F, MOD = ;
#define MS(a, num) memset(a, num, sizeof(a))
int C[N];
int n, m, k;
int a[N], rak[N]; struct data{
int num, i;
}b[N];
inline int lowbit(int x){
return x&-x;
}
inline void add(int x, int val){//将第x个数增加val,从1计数
for(int i=x;i<=n;i+=lowbit(i)){
C[i] += val;
}
}
inline int sum(int x){//求1到x的和
int ret = ;
for(int i=x;i>;i-=lowbit(i)){
ret+=C[i];
}
return ret;
} bool cmp(const data &a, const data &b){
return a.num < b.num;
} int getK(int val){
int l = , r = n + ;
while(l < r){
int m = (l + r)>>;
int s = sum(m);
if(s < k){
l = m + ;
}else{
r = m;
}
}
return b[l -].num;
}
int main(){
int t;
cin>>t;
while(t--){
scanf("%d %d %d", &n, &m, &k);
for(int i = ; i < n; i++){
scanf("%d", &a[i]);
b[i].num = a[i];
b[i].i = i;
}
MS(C, );
sort(b, b + n, cmp); for(int i = ; i< n; i++){
rak[b[i].i] = i + ;
} LL ans = ;
for(int i = ; i < m; i++){
add(rak[i % n], );
} for(int i = m + ; i < * m + ;i++){
add(rak[i % n], );
} for(int i = m ; i <= m + n - ; i++){
ans += getK(a[i % n]);
ans %= MOD;
if(i != m + n - ){
add(rak[(i - m)%n], -);
add(rak[(i + m + ) % n], );
add(rak[i % n], );
add(rak[(i + ) % n], -);
}
}
printf("%I64d\n", ans % MOD);
}
return ;
}
HDU1899 Sum the K-th's(树状数组)的更多相关文章
- bzoj 3110: [Zjoi2013]K大数查询 树状数组套线段树
3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1384 Solved: 629[Submit][Stat ...
- ZOJ 2112 Dynamic Rankings (动态第k大,树状数组套主席树)
Dynamic Rankings Time Limit: 10 Seconds Memory Limit: 32768 KB The Company Dynamic Rankings has ...
- Maximum Subsequence Sum【最大连续子序列+树状数组解决】
Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i < ...
- codeforces 1269E K Integers (二分+树状数组)
链接:https://codeforces.com/contest/1269/problem/E 题意:给一个序列P1,P2,P3,P4....Pi,每次可以交换两个相邻的元素,执行最小次数的交换移动 ...
- BZOJ 3110: [Zjoi2013]K大数查询( 树状数组套主席树 )
BIT+(可持久化)权值线段树, 用到了BIT的差分技巧. 时间复杂度O(Nlog^2(N)) ---------------------------------------------------- ...
- Matrix Sum HihoCoder - 1336 二维树状数组 感觉好像二维差分。
#include<cstdio> #include<cstring> using namespace std; typedef long long ll; ; ; ll c[N ...
- BZOJ.3110.[ZJOI2013]K大数查询(整体二分 树状数组/线段树)
题目链接 BZOJ 洛谷 整体二分求的是第K小(利用树状数组).求第K大可以转为求第\(n-K+1\)小,但是这样好像得求一个\(n\). 注意到所有数的绝对值\(\leq N\),将所有数的大小关系 ...
- uva 12356 Army Buddies 树状数组解法 树状数组求加和恰为k的最小项号 难度:1
Nlogonia is fighting a ruthless war against the neighboring country of Cubiconia. The Chief General ...
- BZOJ 3196 Tyvj 1730 二逼平衡树 ——树状数组套主席树
[题目分析] 听说是树套树.(雾) 怒写树状数组套主席树,然后就Rank1了.23333 单点修改,区间查询+k大数查询=树状数组套主席树. [代码] #include <cstdio> ...
- {POJ}{树状数组}
总结一下树状数组的题目: {POJ}{3928}{Ping Pong} 非常好的题目,要求寻找一个数组中满足A[i]<A[k]<A[j]的个数,其中i<k<j(或者相反).很巧 ...
随机推荐
- 如何用phpstorm编辑远程项目
背景介绍:LAMP开发是很多公司喜欢采用的技术组合,故而做php开发,使用linux环境也是很多公司的要求.本文就来介绍下如何在windows下,使用phpstorm集成开发环境,来开发放在linux ...
- POJ 3281 网络流dinic算法
B - Dining Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit S ...
- class.equals
public boolean equals(Object obj) 1.自身和自身应该是equals的. X.equals(x) return ture2.如果A等于B, 那么B也就等于A . X.e ...
- PHP: How to print a debug log?
file_put_contents('php://stderr', print_r("hello ", TRUE)); 转自: http://stackoverflow.com/q ...
- devstack meaning of: n-cond, n-novnc and n-xvnc
devstack has shortened names for a number of services, e.g. g-api = glance api g-reg = glance regist ...
- varchar 和 nvarchar 的区别和使用
区别: 1.nvarchar 不管是一个字符还是一个汉字,都存为2个字节.varchar 汉字是两个字节,其它字符为1个字节. 2.nvarchar(n):包含n个字符的可变长度Unicode字符数据 ...
- codeforces 499B.Lecture 解题报告
题目链接:http://codeforces.com/problemset/problem/499/B 题目意思:给出两种语言下 m 个单词表(word1, word2)的一一对应,以及 profes ...
- webclient 和httpclient 应用
//webclient应用 MyImageServerEntities db = new MyImageServerEntities(); public ActionResult Index() { ...
- 【编程题目】设计包含 min 函数的栈
2.设计包含 min 函数的栈(栈)定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素.要求函数 min.push 以及 pop 的时间复杂度都是 O(1). 我的思路: 用一个额外的 ...
- Jquery如何判断Radiobutton是否选中
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...