LG3960 列队
题意
分析
参照博客
树状数组+离线处理即可。
利用树状数组下标本质即可\(O(\log n)\)求第k大。
代码
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<algorithm>
#include<string>
#define co const
#define il inline
#define rg register
const int MAXBUF=20000005;
char B[MAXBUF],*Si=B,*Ti=B;
inline char getc()
{
if (Si==Ti) Ti=(Si=B)+fread(B,1,MAXBUF,stdin);
if (Si==Ti) return 0;
return *Si++;
}
template <class T>
inline void read(T &a)
{
static char c;
while ((c=getc())<'0'||c>'9');
a=c-'0';
while ((c=getc())>='0'&&c<='9') a=(a<<3)+(a<<1)+c-'0';
}
using namespace std;
typedef long long ll;
co int MAXN=3e5+7;
int n,m,nq;
int q[MAXN][2];
struct $
{
int p,id;
$(){}
$(int p,int id):p(p),id(id){}
};
vector <$> t[MAXN];
typedef vector<$>::iterator it;
int c[MAXN<<1],mx; // edit 1
int lowbit(int x)
{
return x&-x;
}
void add(int p,int v)
{
for(int i=p;i<=mx;i+=lowbit(i))
c[i]+=v;
}
int sum(int p)
{
int res=0;
for(int i=p;i;i-=lowbit(i))
res+=c[i];
return res;
}
int find(int p)
{
int res=0;
for(int i=20;i>=0;--i)
{
res+=(1<<i);
if(res>mx||c[res]>=p) // 不足最后加1,过剩则无法处理
res-=(1<<i);
else
p-=c[res];
}
return res+1;
}
int d[MAXN];
vector<ll>v[MAXN],lst;
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
read(n);read(m);read(nq);
mx=max(n,m)+nq;
for(int i=1;i<=nq;++i)
{
read(q[i][0]);read(q[i][1]);
if(q[i][1]!=m)
t[q[i][0]].push_back($(q[i][1],i));
}
for(int i=1;i<=mx;++i)
add(i,1);
for(int i=1;i<=n;++i)
{
for(it j=t[i].begin();j!=t[i].end();++j)
add(d[j->id]=find(j->p),-1);
for(it j=t[i].begin();j!=t[i].end();++j)
add(d[j->id],1);
}
ll ans;
for(int i=1;i<=nq;++i)
{
int x=find(q[i][0]);
ans=x<=n?(ll)x*m:lst[x-n-1];
add(x,-1);
if(q[i][1]!=m)
{
v[q[i][0]].push_back(ans);
ans=d[i]<m?((ll)q[i][0]-1)*m+d[i]:v[q[i][0]][d[i]-m];
}
lst.push_back(ans);
printf("%lld\n",ans);
}
return 0;
}
LG3960 列队的更多相关文章
- 关于PHP堆栈与列队
在PHP中数组常被当作堆栈(后进先出:LIFO)与队列(先进先出:FIFO)结构来使用.PHP提供了一组函数可以用于push与pop(堆栈)还有shift与unshift(队列)来操作数组元素.堆栈与 ...
- 在PHP中如何使用消息列队
/** * 消息列队服务 * @author zhou.tingze * @example * -----------------------------------Create----------- ...
- BZOJ2720: [Violet 5]列队春游
2720: [Violet 5]列队春游 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 173 Solved: 125[Submit][Status] ...
- [NOIp 2017]列队
Description Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有$n \times m$名学生, ...
- NOIP2017D2T3 列队—Treap
NOIP2017列队 Description Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia所在的方阵中有n × m ...
- P2649 - 【NOIP2017】列队
Description Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m 名学生,方阵的行数为 ...
- WebForm应用log4net记录错误日志——使用线程列队写入
我的项目结构如下图: 日志帮助类库需要log4net包:工具—NuGet包管理器—管理解决方案NuGet程序包 线程日志帮助类 FlashLogger.cs 代码 using System; usin ...
- 【洛谷P3960】列队题解
[洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...
- [NOIP]2017列队——旋转treap/非旋转treap
Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia所在的方阵中有n × m名学生,方阵的行数为 n,列数为m. 为了便 ...
随机推荐
- python脚本11_求10万以内所有素数
#求10万以内所有素数 num = int(input(">>>")) strs = '' for i in range(2,num): for c in ran ...
- easyui datagrid 没有记录
datagrid返回记录为0时显示"没有记录" datagrid 插件编写 <script> var emptyview = $.extend({},$.fn.data ...
- JXLS导出Excel(模板导出)
1.导包 在pom.xml中加入依赖如下: <dependency> <groupId>org.jxls</groupId> <artifactId>j ...
- 大小堆C++实现
C++大小堆实现(仿函数) 具体代码如下 #pragma once #include<iostream> #include<vector> using namespace st ...
- jmeter-01 JMeter HTTP测试的各元件功能演示示例
最小的测试将包括测试计划,线程组和一个或多个采样器. Jmeter HTTP测试的各元件演示示例 功能逻辑:wap官网(a.4399sy.com.hk),每个用户登录一次,发帖2次,发帖成功后注销退出 ...
- UVA-10765 Doves and bombs (双连通分量)
题目大意:给一个n个点的无向连通图,找出删除某个点后的连通块个数. 题目分析:统计一下每个节点属于几个双连通分量,若是割点,得到的便是答案,否则答案为1. 代码如下: # include<ios ...
- Highcharts 测量图;Highcharts 圆形进度条式测量图;Highcharts 时钟;Highcharts 双轴车速表;Highcharts 音量表(VU Meter)
Highcharts 测量图 配置 chart.type 配置 配置 chart 的 type 为 'gauge' .chart.type 描述了图表类型.默认值为 "line". ...
- Angular开发实践(七): 跨平台操作DOM及渲染器Renderer2
在<Angular开发实践(六):服务端渲染>这篇文章的最后,我们也提到了在服务端渲染中需要牢记的几件事件,其中就包括不要使用window. document. navigator等浏览器 ...
- 005——数组(五)array_diff_ukey()array_diff_uassoc()array_intersect()array_intersect_assoc()array_intersect_key()array_intersect_ukey()array_intersect_uassoc()
<?php function dump($arr) { print_r($arr); } /**array_diff_ukey() 通过回调函数的方式,返回一个数组在其他数组中不存在键名的值 * ...
- MongoHelper.cs
using System; using MongoDB.Bson; using MongoDB; using System.Web; using MongoDB.Driver; namespace Y ...