NOIP2017 Day2_T3 列队

瑞芯微RK3588开发板VSCode远程开发全攻略:从SSH配置到插件优化 本文详细介绍了如何在瑞芯微RK3588开发板上配置VSCode远程开发环境。从Ubuntu系统下的SSH服务设置、VSCode Remote-SSH扩展安装,到连接建立、基础工具链部署,再到针对ARM平台的性能优化与调试配置,提供了一套完整的实战指南,帮助开发者高效利用本地资源进行嵌入式开发。 阅读详情

题目大意:

众人皆知。

题解:

考场时打SBT打傻了,被卡爆了。

这就是个傻逼线段树能过的东西,不要问我问为什么能跑这么快?

每一行用线段树维护前m-1个。

最后一列独立开来。

查询用线段树二分。

可以直接预开6e5。

完。

Code:

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define fo(i, x, y) for(int i = x; i <= y; i ++)
using namespace std;

const int N = 300005;
int n, m, Q, x, y;
int tot, g[N], ed[N];
struct node {
    ll x, y; int l, r, s;
} t[16000000];

void update(int i) {
    if(t[i].x != 0) {
        ll m = t[i].x + t[i].y >> 1;
        t[t[i].l].x = t[i].x; t[t[i].l].y = m;
        t[t[i].r].x = m + 1; t[t[i].r].y = t[i].y;
        t[t[i].l].s = t[t[i].l].y - t[t[i].l].x + 1;
        t[t[i].r].s = t[t[i].r].y - t[t[i].r].x + 1;
        t[i].x = 0;
    }
}

void change(int i, int x, int y, int l, int r, ll l1, ll r1) {
    if(x == l && y == r) {
        t[i].x = l1; t[i].y = r1; t[i].s = r1 - l1 + 1;
        return;
    }
    int m = x + y >> 1;
    if(t[i].l == 0) t[i].l = ++ tot;
    if(t[i].r == 0) t[i].r = ++ tot;
    if(r <= m) change(t[i].l, x, m, l, r, l1, r1); else
    if(l > m) change(t[i].r, m + 1, y, l, r, l1, r1); else {
        ll m1 = l1 + m - l;
        change(t[i].l, x, m, l, m, l1, m1);
        change(t[i].r, m + 1, y, m + 1, r, m1 + 1, r1);
    }
    t[i].s = t[t[i].l].s + t[t[i].r].s;
}

int ans1; ll ans2;

void find(int i, int x, int y, int s) {
    if(x == y) {
        ans1 = x; ans2 = t[i].x;
        return;
    }
    int m = x + y >> 1;
    if(t[i].l == 0) t[i].l = ++ tot;
    if(t[i].r == 0) t[i].r = ++ tot;
    update(i);
    t[t[i].l].s >= s ? find(t[i].l, x, m, s) : find(t[i].r, m + 1, y, s - t[t[i].l].s);
}

struct nnode {
    int x, y;
}q[N];

int mx[N];


int main() {
    freopen("phalanx.in", "r", stdin);
    freopen("phalanx.out", "w", stdout);
    scanf("%d %d %d", &n, &m, &Q);
    fo(i, 1, n) mx[i] = m - 1;
    fo(i, 1, Q) {
        scanf("%d %d", &x, &y);
        q[i].x = x; q[i].y = y;
        mx[x] ++;
    }
    mx[n + 1] = n + Q;
    fo(i, 1, n) {
        g[i] = ++ tot;
        change(g[i], 1, mx[i], 1, m - 1, (ll)(i - 1) * m + 1, (ll) i * m - 1);
        ed[i] = m - 1;
    }
    g[n + 1] = ++ tot;
    fo(i, 1, n) change(g[n + 1], 1, mx[n + 1], i, i, (ll) i * m, (ll) i * m);
    ed[n + 1] = n;
    fo(i, 1, Q) {
        x = q[i].x; y = q[i].y;
        if(y == m) {
            find(g[n + 1], 1, mx[n + 1], x);
            change(g[n + 1], 1, mx[n + 1], ans1, ans1, 0, -1);
            ed[n + 1] ++;
            change(g[n + 1], 1, mx[n + 1], ed[n + 1], ed[n + 1], ans2, ans2);
            printf("%lld\n", ans2);
        } else {
            find(g[x], 1, mx[x], y);
            int a1 = ans1; ll a2 = ans2;
            find(g[n + 1], 1, mx[n + 1], x);
            change(g[x], 1, mx[x], a1, a1, 0, -1);
            ed[x] ++;
            change(g[x], 1, mx[x], ed[x], ed[x], ans2, ans2);
            change(g[n + 1], 1, mx[n + 1], ans1, ans1, 0, -1);
            ed[n + 1] ++;
            change(g[n + 1], 1, mx[n + 1], ed[n + 1], ed[n + 1], a2, a2);
            printf("%lld\n", a2);
        }
    }
}
【LLC快速上手系列】LLC轻载时:开关频率 + 死区时间 联合优化! 轻载优化,频率别飞天,死区要有耐心。两手一起抓,效率高到笑。😎。 阅读详情

相关推荐

Bioinformatics2021 | FraGAT+:基于分子原始片段的多尺度图注意力机制的分子性质预测模型

Bioinformatics2021 | FraGAT:基于分子原始片段的多尺度图注意力机制的分子性质预测模型

justBeHerHero 2001

【NOIP 2017】Day2 T3 列队

Problem Description \(Sylvia\) 是一个热爱学习的女孩子。 前段时间,\(Sylvia\) 参加了学校的军训。众所周知,军训的时候需要站方阵。 \(Sylvia\) 所在的方阵中有\(n*m\)名学生,方阵的行数为 \(n\),列数为 \(m\)。 为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中 的学生从 \(1\) 到 \(n*m\) ...

洛水·锦依卫's Blog 297

MultiOTP Credential Provider避坑指南:从安装到RDP双因素认证的全流程解析

本文详细解析了MultiOTP Credential Provider从安装到实现RDP双因素认证(MFA)的全流程,重点分享了Docker部署、Active Directory集成及网络级认证(NLA)兼容性等环节的实战避坑经验,旨在帮助运维人员高效、稳定地部署离线双因素认证方案,提升Windows远程桌面安全性。

weixin_29255731的博客 644

[Noip2017] 列队

Description \(Sylvia\) 是一个热爱学习的女♂孩子。 前段时间,\(Sylvia\) 参加了学校的军训。众所周知,军训的时候需要站方阵。 \(Sylvia\) 所在的方阵中有 \(n \times m\) 名学生,方阵的行数为 \(n\) ,列数为 \(m\) 。 为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中 的学生从 \(1\) 到 \(n \time...

weixin_30391339的博客 133

Vitis Model Composer闪退?手把手教你用命令行启动Vivado 2021后的System Generator

本文详细解析了Vitis Model Composer闪退问题的根本原因,并提供了命令行启动Vivado 2021后System Generator的完整解决方案。从环境变量配置、组件缺失排查到权限问题处理,手把手教你通过命令行深度排错,并分享高级自动化脚本和系统优化技巧,帮助开发者高效使用Vitis Model Composer与System Generator进行HDL开发。

weixin_26905487的博客 349

MATLAB实战:手把手教你用三频四步相移法搞定结构光三维重建(附完整代码)

本文详细介绍了如何使用MATLAB实现三频四步相移法进行高精度结构光三维重建。通过光栅图像预处理、相位计算、多频外差与相位解包裹等步骤,结合完整代码示例,帮助读者掌握从二维图像到三维点云的关键技术。该方法在工业检测和逆向工程中具有抗干扰能力强、高分辨率和鲁棒性等优势。

weixin_29201933的博客 339

「NOIP2017 提高组」列队

首先我们算出每一次操作真实询问的位置。这里的真实位置是指对于每一行加入维护出进入过该行的所有数以及次序,那么答案应该对应的是哪一个数。真实位置可以用之前的 BIT + 二分 解决。考虑到可能成为答案的数很少,用 BIT + 二分 维护第一行。具体地,如果一个数存在,那么在 BIT 中该位置的等于。,那么可以直接求出,否则按询问输入顺序维护每一行从最后一列加入的数。那么如果单独提出最后一列后,每一行的操作就是独立的了。也就是每一次操作就是对。

FuDuoDuo_qwq的博客 217

【七.三维视觉与视频分析】【1.点云处理:PointNet++/PointTransformer】

各位老铁,今天咱们要聊的可不是普通的二维图像处理,而是三维视觉领域最硬核的技术——点云处理。从最早的PointNet到如今的PointTransformer,这场技术进化堪比三维版的"像素革命"。今天咱们就深入解剖两大里程碑:PointNet++和PointTransformer,保证让你看完全文就能在点云领域横着走!想象一下,你抓了把沙子撒在空中,每粒沙子的位置都是三维坐标——这就是点云的典型形态。最后送大家一句话:点云处理就像在三维宇宙中寻找星辰的轨迹,既要望远镜的宏观视野,也要显微镜的细致入微。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 474

【NOIP2017提高组】列队

题目背景 NOIP2017提高组 DAY2 T3 题目描述 Sylvia 是一个热爱学习的女孩子。 前段时间,Sylvia 参加了学校的军训。众所周知,军训的时候需要站方阵。Sylvia 所在的方阵中有 n×m 名学生,方阵的行数为 n,列数为 m 。 为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中的学生从 1 到 n×m 编上了号码(参见后面的样例)。即:初始时,第...

ETO的博客 1448

机器人在果园内行巡检仿真(2D雷达、realsense相机)

DiffBot是一种具有两个轮子的自主差动驱动机器人。它的主要处理单元是一个运行Ubuntu Mate 20.04和ROS 1 (ROS Noetic)中间件的Raspberry pi4b。该存储库包含ROS驱动包、真实机器人的ROS控制硬件接口和模拟DiffBot的配置。修改配置文件orchard_world.launch。

如果想成为中心,那么就到中心去吧。 1312

Objective-C实现人工势场法(附完整源码)

Objective-C实现人工势场法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 426

【NOIP2017】队列

题目描述 Sylvia 是一个热爱学习的女♂孩子。 前段时间,Sylvia 参加了学校的军训。众所周知,军训的时候需要站方阵。 Sylvia 所在的方阵中有n×m名学生,方阵的行数为 n,列数为 m。 为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中 的学生从 1 到 n×m 编上了号码(参见后面的样例)。即:初始时,第 i 行第 j 列 的学生的编号是(i−1)×m+...

include / Hdhd 1305

星载SAR的各项指标解读(史上最全)

一、系统指标 系统指标主要指雷达系统的通用的指标,以及和卫星整星相关的指标,主要有一下几项: 工作频段: 雷达体制: 极化方式: 设计s

9273

NOIP2017 Day2 T3 列队

戳我看题面 考虑n=1的时候: 维护一个数列,每次删除一个数,再数列的结尾加上一个数,求第K大 这是splay,treap模板题 当然,不单单可以用他们来做 来可以用老少皆宜的线段树来做 维护01数列表示那个数是否存在,提前开出空间 删掉一个数标记成0,加上一个数常规加,求第K大就是线段树上二分 也可以用树状数组来做 与线段树操作一样,求第K大就是树状数组上倍增 当n!=...

YYHS_WSF的博客 320

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

NOIP2017Day2T3-列队

3、列队Time Limit: 2 Sec  Memory Limit: 512 MBDescription  Sylvia 是一个热爱学习的女♂孩子。  前段时间,Sylvia 参加了学校的军训。众所周知,军训的时候需要站方阵。  Sylvia 所在的方阵中有n×m 名学生,方阵的行数为n,列数为m。   为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中的学生从 1 到 n×...

Mi-Queen 768

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【Luogu P3960】NOIP2017 day2T3 列队

题目链接 题目描述 Sylvia 是一个热爱学习的女♂孩子。 前段时间,Sylvia 参加了学校的军训。众所周知,军训的时候需要站方阵。 Sylvia 所在的方阵中有 n×m 名学生,方阵的行数为 n ,列数为 m 。 为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中 的学生从 1 到 n×m编上了号码(参见后面的样例)。即:初始时,第 i 行第 j 列 的学生的...

Yu Gi Oh! 265

NOIP2017提高组Day2T3 列队 洛谷P3960 线段树

原文链接https://www.cnblogs.com/zhouzhendong/p/9265380.html 题目传送门 - 洛谷P3960 题目传送门 - LOJ#2319 题目传送门 - Vijos P2033 题意   懒了,不概括了。       题解   一开始写了树状数组。   算法非常真,写完全部 WA,但是漏了一步,我快写吐了,于是弃疗之后从某度*了一份代码。...

weixin_30716725的博客 280

NOIP2017 Day2 T3 列队(treap)

  可以直接用treap上大模拟...n+1个treap维护n行的前m-1个点和最后一列。   需要支持删除一个点或者一段区间,而空间并不支持存下所有的点的时候,可以用一个点代替一个区间,记录区间首项的值和区间长度,这样每次查询某个点x的时候就可以用x在某个点y代表的区间里的rank来得到x的值,然后把x删去的时候,就把y这个区间从$[l,r]$拆分成$[l,x-1]$和$[x+1,r...

weixin_30439131的博客 80

[NOIp2017 Day2 T3] 列队phalanx(线段树 / 平衡树)

题目 描述 Sylvia 是一个热爱学习的女♂孩子。 前段时间,Sylvia 参加了学校的军训。众所周知,军训的时候需要站方阵。 Sylvia 所在的方阵中有n×m" role="presentation" style="position: relative;">n×mn×mn \times m名学生,方阵的行数为 n" role="presentation" style

PhantomAgony 866

『动态开点线段数』「NOIP2017Day2T3」列队·毒瘤

题目描述 题解 观察到每一个点离队以后方阵的变化,可以发现: 对于每一个离队,如果是最后一列,变化的仅仅只有最后一列。 如果离队的不是最后一列,则变化的是这一行以及最后一列。 因此,我们需要动态维护nnn行列为[1,m−1][1,m-1][1,m−1]的方阵队形,并且维护最后一列的方阵队形。 我们所进行的操作就是,在删除节点的位置标记一个 111 ,在其余位置标记一个 000 ;那么只需要找...

Ronaldo7_ZYB的博客 260

LUOGU P3960 列队 (noip2017 day2T3)

传送门 解题思路 记得当时考试我还是个孩子,啥也不会QAQ。现在回头写,用动态开点的线段树,在每行和最后一列开线段树,然后对于每次询问,把x行y列的删去,然后再把x行m列的元素加入x行这个线段树,然后再把删去元素加到最后一列里,用一个vector维护变化后的标号。 代码 #include<iostream> #include<cstdio> #in...

weixin_30675967的博客 113

【NOIP2017 D2T3】 列队

题目链接:各大OJ上都有。 闲话:毫不过分地说这题我做了一年。 前置知识:线段树(权值线段树和动态开点,也就是主席树) 30分做法:直接模拟即可。 code: #include<iostream> #include<cstdio> using namespace std; const int N = 1010; int n, m, q; int que[N]...

Romain的博客 247

NOIP2017day2题解

时隔这么久真心的是忘了写noip系列的题解了 刚好今天复习的时候重新做了一遍17年day2的题,所以就写一篇题解 T1 奶酪 题目描述 现有一块大奶酪,它的高度为 hh,它的长度和宽度我们可以认为是无限大的,奶酪 中间有许多 半径相同 的球形空洞。我们可以在这块奶酪中建立空间坐标系,在坐标系中, 奶酪的下表面为z = 0z=0,奶酪的上表面为z = hz=h。 现在,奶酪的下表面有一只...

Amuseir的博客 953

NOIp2017 题解

Day1 T1 小凯的疑惑 题目传送门 考场上打表搞了一个很奇怪的结论,化简后就是a∗b−a−ba*b-a-ba∗b−a−b。具体证明现在还是不大会。 代码: #include&amp;lt;cstdio&amp;gt; #include&amp;lt;cstring&amp;gt; #include&amp;lt;algorithm&amp;gt; using namespace std; typedef long long LL; LL a...

forezxl的博客 1937

[NOIP2017]列队 (Splay)

题目链接 NOIP2017真的是不按常理出牌: 1、数学题不在Day2T1 2、一道水题一道细节极多的模拟题一道不知道怎么形容的题(小凯的疑惑)(因为我太菜了) 3、3道大火题 当时看到列队这题是毫无头绪的,因为数据大得让你存都存不下,于是果断打了个30分暴力(如果打个离散化还能多骗20分)。 蓦然回首,豁然开朗。 思考可知,一个人出列影响的只是当前一行和最后一列,于是,我们只需要对每一行和最后一...

weixin_30413739的博客 82

NOIP2017d2t3 列队 动态开点线段树

题意 有一个n*m的矩阵,一开始位置(x,y)上的元素为(x-1)*m+y。接下来有q个操作:每次操作为(x,y),表示先输出位置(x,y)上的值,设t为(x,y)上的值,然后把第x行[y+1…m]上的每个数往前移一位,把最后一列[x+1…n]上的每个数往前移一位,最后把t放到位置(n,m)。 n,m,q&lt;=300000 分析 考场上大概想到了做法,但由于一个地方把n和m打反而少...

beginend 891
上一篇: NOIP2017 Day1_T3 逛公园
下一篇: 默慈金数学习小记 && 51nod 1556 计算
Cold_Chair
博客等级 码龄11年 158粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值