[DP][CDQ分治] BZOJ 4553: [Tjoi2016&Heoi2016]序列

华为od 面试八股文_数据库_01_含答案 阅读详情

SolutionSolution

设位置ii最大可变成ri,最小lili。
fifi为ii位置的答案。容易得到

fi=max{fj+1|j<i,rj≤ai,aj≤li}
把(rj,aj)(rj,aj)当作二位平面的一个点,((ai,li),(0,0))((ai,li),(0,0))看作一个矩形。
就是一个类似二维数点的问题。
直接CDQCDQ分治就好了。
O(nlog2n)O(nlog2⁡n)

#include <bits/stdc++.h>
#define show(x) cerr << #x << " = " << x << endl
using namespace std;
typedef long long ll;
typedef pair<int, int> Pairs;

const int N = 202020;

inline char get(void) {
    static char buf[100000], *S = buf, *T = buf;
    if (S == T) {
        T = (S = buf) + fread(buf, 1, 100000, stdin);
        if (S == T) return EOF;
    }
    return *S++;
}
template<typename T>
inline void read(T &x) {
    static char c; x = 0; int sgn = 0;
    for (c = get(); c < '0' || c > '9'; c = get()) if (c == '-') sgn = 1;
    for (; c >= '0' && c <= '9'; c = get()) x = x * 10 + c - '0';
    if (sgn) x = -x;
}

int n, m, q, x, y, clc;
int mx[N], vis[N];
int a[N], l[N], r[N];
int f[N];
struct cpp {
    int x, y, z, id, tp;
    cpp(int _x = 0, int _y = 0, int _z = 0, int i = 0, int t = 0):
        x(_x), y(_y), z(_z), id(i), tp(t) {}
    inline bool operator <(const cpp &b) const {
        return x < b.x;
    }
};
cpp b[N];

inline void update(int x, int a) {
    for (x; x <= m; x += x & -x)
        if (vis[x] != clc) {
            mx[x] = a; vis[x] = clc;
        } else mx[x] = max(mx[x], a);
}
inline int query(int x) {
    int mx = 0;
    for (; x; x -= x & -x)
        if (vis[x] == clc)
            mx = max(mx, ::mx[x]);
    return mx;
}
inline void divAndConq(int l, int r) {
    static cpp tmp[N];
    if (l == r) return;
    int mid = (l + r) >> 1;
    int s1 = l, s2 = mid + 1;
    for (int i = l; i <= r; i++)
        if (b[i].z <= mid) tmp[s1++] = b[i];
        else tmp[s2++] = b[i];
    for (int i = l; i <= r; i++) b[i] = tmp[i];
    divAndConq(l, mid);
    ++clc;
    int j = l;
    for (int i = mid + 1; i <= r; i++) {
        for (; j <= mid && b[j].x <= b[i].x; j++)
            if (b[j].tp == 0)
                update(b[j].y, f[b[j].id]);
        if (b[i].tp == 1)
            f[b[i].id] = max(f[b[i].id], query(b[i].y) + 1);
    }
    divAndConq(mid + 1, r);
    int s = l; s1 = l; s2 = mid + 1;
    while (s1 <= mid && s2 <= r)
        if (b[s1] < b[s2]) tmp[s++] = b[s1++];
        else tmp[s++] = b[s2++];
    while (s1 <= mid) tmp[s++] = b[s1++];
    while (s2 <= r) tmp[s++] = b[s2++];
    for (int i = l; i <= r; i++) b[i] = tmp[i];
}

int main(void) {
    freopen("1.in", "r", stdin);
    freopen("1.out", "w", stdout);
    read(n); read(q);
    for (int i = 1; i <= n; i++) {
        read(a[i]); f[i] = 1;
        l[i] = r[i] = a[i];
    }
    while (q--) {
        read(x); read(y);
        l[x] = min(l[x], y);
        r[x] = max(r[x], y);
    }
    for (int i = 1; i <= n; i++)
        m = max(r[i], m);
    q = 0;
    for (int i = 1; i <= n; i++) {
        b[++q] = cpp(a[i], l[i], q, i, 1);
        b[++q] = cpp(r[i], a[i], q, i, 0);
    }
    sort(b + 1, b + q + 1);
    divAndConq(1, q);
    cout << *max_element(f + 1, f + n + 1);
    return 0;
}
微信公众平台 - 微信内置浏览器 WeixinJSBridge.invoke(‘xxx‘) API 报错:system:access_denied(常见于微信支付、分享朋友圈/转发好友等功能)解决方案 微信支付提示System:access_denied,调用微信支付返回:system:access_denied为什么,安卓版微信支付偶尔出现system:access_denied,微信公众号开发分享出现system:access_denied,system:access_denied如何解决?微信WeixinJSBridge.invoke(‘xxx‘)API调用后出现报错,微信内部H5WeixinJSBridge.invokesystem:access_denied,使用微信jssdk时报ac 阅读详情

相关推荐

不只是抓取:用五指灵巧手(ROH-A001/RH56)玩转ROS2下的力控与混合控制

本文深入探讨了在ROS2环境下使用五指灵巧手(ROH-A001/RH56)实现力控与混合控制的实战技巧。从硬件通信协议解析到ROS2节点开发,详细介绍了力感知架构、实时数据处理和混合控制策略,帮助开发者在Ubuntu系统中高效实现精密操作。通过鸡蛋抓取等实例,展示了力控技术在机器人灵巧操作中的关键作用。

weixin_28221501的博客 286

BZOJ-4553:序列(cdq分治)

                                       4553: [Tjoi2016&amp;Heoi2016]序列                                                                 Time Limit: 20 Sec  Memory Limit: 128 MB                        ...

Mitsuha_的博客 525

GNSS数据处理(一)——开源软件RTKLIB与G-Nut/Anubis实战入门

本文详细介绍了GNSS数据处理的开源软件RTKLIB与G-Nut/Anubis的实战入门指南。从软件安装、数据获取到静态短基线解算,逐步讲解操作技巧与常见问题排查,帮助测绘与地质监测人员快速掌握GNSS数据处理技术,提升工作效率。

weixin_30733003的博客 133

LOJ#6289. 花朵 树链剖分+分治NTT

本来以为这道题会非常难调,但是没想到调了不到 5 分钟就 A 了. 由于基于多项式的运算都可以方便地进行封装,所以细节就不是很多(或者说几乎没有细节) 题意:给定一棵树,每个点有点权,求对于所有大小为 $m$ 的独立集的点权之积的和. 数据范围:$n,m \leqslant 8 \times 10^4$. 先考虑一个十分显然的 $O(n^2)$ 暴力: 令 $f[...

EM LGH 567

一步一步搭建S32K14x的AutoSar项目----S32DS 代码工程的搭建

一步一步搭建S32K14X的AutoSar项目----S32DS代码工程的搭建

wo580231的博客 3487

数据挖掘实战-基于LSTM时间序列模型的香烟销售预测分析

本文介绍了基于LSTM时间序列模型的香烟销售预测分析实验。实验背景为烟草市场竞争激烈,企业需提高销售预测准确性以优化生产、库存和营销策略。LSTM模型因其处理长序列数据的能力被选为预测工具。实验步骤包括数据准备、特征工程、模型构建、训练与评估及结果分析。数据集来自某市门店的销售数据,技术工具为Python 3.9和Jupyter Notebook。实验过程涵盖数据导入、预处理、产品销售与区域销售分析、销售预测(包括销售额、销量、利润及海通店销售额预测)。

m0_64336780的博客 8951

【LOJ6289】花朵(树上背包)(NTT)(链分治)(带权二分)

传送门 题解: 老年选手搞了半个月的文化课开始康复训练。 很显然要求的就是个独立集形式的树上背包。 写成卷积的形式链分治+带权二分即可。 很好写,拿下LOJ rk1。 复杂度 O(nlog⁡2n)O(n\log^2n)O(nlog2n),分析方式类似全局平衡二叉树。 看了下AC代码,除了我和rk2,剩下的分治部分似乎都是普通二分而不是带权二分,可以卡到 O(nlog⁡3n)O(n\log^3 n...

zxyoi_dreamer的博客(不定期诈尸) 1215

汇川Easy系列斜坡函数功能块(支持状态输出)

IN rSetValue REAL 0.000000 0.000000 不保持 目标值 1IN rMaxValue REAL 0.000000 0.000000 不保持 最大目标值 2IN rMinValue REAL 0.000000 0.000000 不保持 最小目标值 3IN rSmoothTime REAL 100.000000 100.0000 不保持 最小到最大值平滑时间 单位 秒 4IN diTs DINT 10 10 不保持 函数调用周期采样时间中断时间 5。

RXXW_Dor的博客 456

[ DP CDQ分治 ] BZOJ4553

设 li" role="presentation" style="position: relative;">lilil_i 表示 ai" role="presentation" style="position: relative;">aiaia_i 可以变成的最小值, ri" role="presentation" style="position: relative;">ririr_i 表示最大值

gjghfd 352

MATLAB使用贝叶斯网络bnt工具箱:使用手册详解

MATLAB使用贝叶斯bnt网络工具箱:使用手册详解

WW、forever的博客 2676

麻辣香锅病毒分析

Spicy Hot Pot浏览器劫持病毒(麻辣香锅病毒)从2020年初被安全公司监测到,因其病毒模块带有MLXG_KM被安全行业代称麻辣香锅病毒。目前通过各种激活工具传播, 包括暴风激活、小马激活和KMS激活等诸多工具,疑似与下载站进行合作推广此类激活工具。Spicy Hot Pot 是一个浏览器劫持 Rootkit,它会将用户的主页更改为指向恶意软件操作员控制的页面,此外还会将内存转储从机器上传到预定义的服务器,并结合本地更新功能以确保其保持更新。通常浏览器劫持者会通过更改用户主页的恶意可执行文件或注册表

不忘初心,护天下安全! 4788

[bzoj4553][TJOI&HEOI2016]序列

题目大意有一个长度为n的序列,有一些位置的值有可能变化。 一次变化最多只会改变一个位置上的值,题目告诉了你可能发生的变化情况。 求在任意可能情况下都能满足非降的最长子序列长度。DP先弄出偏序关系,设mi[i]表示位置i可能出现的最小值,mx[i]就是最大值。 那么对于j<ij<i,j与i可以在一个合法子序列中的条件是: 1、a[j]<=mi[i] 2、mx[j]<=a[i] 设f[i]表

不来也不去的一只失忆蝴蝶 1707

零基础基于U-Net网络实战眼底图像血管提取

文章目录1 前言2 血管提取任务概述3 U-Net架构简介4 眼底图像血管分割代码5 结果评估可视化(ROC曲线)6 改进U-Net网络完成眼底图像血管提取任务思路 1 前言 本文基于U-Net架构完成了视网膜血管的提取任务,基于Keras框架更简单的实现分割,网络、工具类、训练和预测的代码一目了然

NJU phd 在读。 5202

[BZOJ4553][Tjoi2016&Heoi2016]序列(CDQ 分治优化 DP)

Address https://www.lydsy.com/JudgeOnline/problem.php?id=4553 Solution 下面设三个值: aiaia_i :原序列 iii 位置的值。 aminiaminiamin_i : iii 位置可能被变换成的最小数值。 amaxiamaxiamax_i : iii 位置可能被变换成的最大数值。 而一个合法的子序列必须满足,对...

女装的你,如此好看! 374

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

bzoj4553 [Tjoi2016&Heoi2016]序列(CDQ分治+dp)

题目链接 分析: 发现这道题有点别扭哎 每次每刻只有一个数字发生变化(下一时刻变化取消) 每个位置都有一个变化范围 求一个子序列,使得在任意一种变化中,这个子序列都是不降的 换句话说,对于这个子序列中的一个位置,不管这个数怎么变化,ta的前驱都会小于等于ta,后继都会大于等于ta 记录每个点的变化范围(min[i],max[i])(min[i],max[i])(min[i],max[...

Coco_T的博客 409

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

bzoj 4553: [Tjoi2016&Heoi2016]序列 (CDQ分治+DP+树状数组)

题目描述传送门题目大意:有一个长为n的序列,m个变换,每次变换把x位置的权值变成v.求一个子序列满足在任意变换中都单调不降(任意变换不能同时进行),问子序列的最长长度。题解先考虑暴力DP。如果点j 可以用来更新i的答案。那么所有包含j的变换以及j初值的最大值一定小于等于i的初值。所有包含i的变换以及i的初值的最小值一定大于等于j的初值。也就是max[j]<=a[i],a[j]<=min[i],j<=

clover_hxy的博客 504

[bzoj4553][Tjoi2016&Heoi2016]序列 cdq分治

我不能说我不珍重这些荣誉,并且我承认它很有价值,不过我却从来不曾为追求这些荣誉而工作。

Unlimited Code Works 403

bzoj4553【TJOI2016&HEOI2016】序列

DP+CDQ分治

AaronPolaris 2212

BZOJ 4553: [Tjoi2016&Heoi2016]序列 CDQ分治 树套树

title BZOJ 4553 LUOGU 4093 Description 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他。玩具上有一个数列,数列中某些项的值可能会变化,但同一个时刻最多只有一个值发生变化。现在佳媛姐姐已经研究出了所有变化的可能性,她想请教你,能否选出一个子序列,使得在任意一种变化中,这个子序列都是不降的?请你告诉她这个子序列的最长长度即可。 注意:...

dilu0653的博客 193

BZOJ4553: [Tjoi2016&Heoi2016]序列【CDQ+DP】

4553: [Tjoi2016&Heoi2016]序列 我们可以得出递推式dp[i]=dp[j]+1,j&lt;i,a[j]&lt;=L[i],R[j]&lt;=a[i]dp[i]=dp[j]+1,j&lt;i,a[j]&lt;=L[i],R[j]&lt;=a[i]dp[i]=dp[j]+1,j<i,a[j]<=L[i],R[j]...

XSamsara的博客 AFO 182

cdq分治——bzoj4553: [Tjoi2016&Heoi2016]序列

http://www.lydsy.com/JudgeOnline/problem.php?id=4553 先递归处理[l,mid] 对于所有在[l,mid]中的修改操作,处理它对于所有在[mid+1,r]中的询问操作的影响 再递归处理[mid+1,r] 这个就是cdq; 题意就是对于i>j max[j]<=a[i] a[j]<=min[i] 我们二分区间; 对于区间l~r

我怎么这么菜的呢 470

bzoj4553 [Tjoi2016&Heoi2016]序列

http://www.elijahqi.win/archives/2949 Description 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他。玩具上有一个数列,数列中某些项的值 可能会变化,但同一个时刻最多只有一个值发生变化。现在佳媛姐姐已经研究出了所有变化的可能性,她想请教你 ,能否选出一个子序列,使得在任意一种变化中,这个子序列都是不降的?请你告诉她这个子序列...

Elijahqi 288

Bzoj4553: Tjoi2016&Heoi2016-序列

bzoj4553

tswdfop的博客 294

BZOJ4553 [Tjoi2016&Heoi2016]序列

设一个数的原值为v[i],最小能变化的值为l[i],最大值为r[i],观察一下可发现,i可放在j后面当且仅当r[j] 然而我写了一发树套树T了,今天模拟,考了一道题,也是dp最长某某某条件子序列转化为矩形最大值和加点,我又怒写一发树套树,结果又T了,xuruifan怒写KDT,T了,commonc怒写CDQ分治,过掉了-_- 然后当个双倍经验,我就写了这个CDQ分治 复杂度O(n log^2

neither_nor 1273

CDQ分治——BZOJ4553 [Tjoi2016&Heoi2016]序列

传送门 和带三维的关键字最长不降挺像 所以我们可以先搞出所有数的原值,最小值和最大值 然后可以CDQ求解 我们首先l~mid按照最大值排序,mid+1~r按照原值排序(每个排列最多只能改动一个数) 然后计算前面的对后面答案的影响即可 跟LIS差不多,只不过最后一维我们用一个树状数组来维护 最后清空一下(和二维矩阵差不多) 对就是这样,答案记录一下最大值就好了 然后关于树状数组和排序

2333:jzqjzq的博客专栏 565
上一篇: [后缀数组][trie合并][启发式合并][并查集] LOJ #6198. 谢特
下一篇: [NTT][DP][树链剖分][分治] LOJ #6289. 花朵
Vectorxj
博客等级 码龄11年 35粉丝 231原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值