树状数组(二维偏序)

news/2024/10/11 2:18:29

题目链接

https://leetcode.cn/problems/maximum-sum-queries/description/

题目大意

image

题目思路

二维偏序问题 -> 一维排序,一维树状数组!

题目代码

class Solution {
public:int sz;vector<int> tr;int lowbit(int x){return x & -x;}void update(int x,int k){for(int i = x;i <= sz;i += lowbit(i))tr[i] = max(tr[i],k);}int query(int x){int ans = -1;for(int i = x;i;i -= lowbit(i)) ans = max(ans,tr[i]);return ans;}vector<int> maximumSumQueries(vector<int>& nums1, vector<int>& nums2, vector<vector<int>>& queries) {int n = nums1.size(),m = queries.size();vector<array<int,2>> nums(n);for(int i = 0;i < n;++i) nums[i] = {nums1[i],nums2[i]};vector<array<int,3>> q(m);for(int i = 0;i < m;++i) q[i] = {queries[i][0],queries[i][1],i};// 离散化unordered_set<int> s;for(auto x:nums) s.insert(x[1]);for(auto x:q)    s.insert(x[1]);vector<int> list(s.begin(),s.end());sort(list.begin(),list.end());sz = list.size();map<int,int> mp;for(int i = 0;i < sz;++i) mp[list[i]] = i;// 一维排序sort(nums.begin(),nums.end(),[](const auto& a,const auto& b){return a[0] > b[0];});sort(q.begin(),q.end(),[](const auto& a,const auto& b){return a[0] > b[0];});tr.resize(sz + 10,-1);vector<int> ans(m);int idx = 0;for(auto qy:q){int x = qy[0],y = qy[1],i = qy[2];while(idx < n && nums[idx][0] >= x){update(sz - mp[nums[idx][1]],nums[idx][0] + nums[idx][1]);++idx;}ans[i] = query(sz - mp[y]);}return ans;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27558.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

游戏排名算法:Elo、Glicko、TrueSkill

Elo rating system Elo等级分制度(英语:Elo rating system)是指由匈牙利裔美国物理学家Arpad Elo创建的一个衡量各类对弈活动水平的评价方法,是当今对弈水平评估公认的权威标准。 两个选手(player)在排名系统的不同,可以用来预测比赛结果。两个具有相同排名(rating)的…

lxc容器没有cron的解决办法

简介 我经常使用cron定时脚本来更新我的cloudflare ddns。 最近想着把pve上跑着的fedora,切换到lxc容器试试。 结果就遇到了没有cron的尴尬。 安装 dnf search crontab dnf install cronatbs启动 systemctl start crond 自启动 systemctl enable crond 小结 主要就是search找一…

视频局部打马赛克

给视频局部打马赛克,用手机APP剪映,操作如下: 1、打开剪映APP,点击“开始创作”,选择需要打马的视频; 2、点击下方“特效”工具-->选“画面特效”-->“基础”-->搜索“马赛克”,添加马赛克特效; 3、成功添加“马赛克”特效到创作区,根据自己需要拉长或缩短…

计算机网络体系结构

一、计算机网络概念 1、计算机网络定义 将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享的系统。 与多终端系统的区别:传统多终端系统是由中央处理器、多个联机终端及一个多用户操作系统组成。终端本身不具备独立的数据处理能…

文件(夹)批量重命名数字、字母、日期、中文数字大写小写

首先,需要用到的这个工具:度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 目标是重命名下面5个文件(也可以是文件夹等,任意),从大写中文数字“贰”开始 打开工具,找到“文件批量复制”版块,快捷键Ctrl+5 找到右下角重命名按钮,点击打开 把那5个要重命名的文件拖入(也…

使用快捷键的方式把多个关键字文本快速替换(快速替换AE脚本代码)

首先,需要用到的这个工具:度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 这里做AE(Adobe After Effact)里的脚本规则,把英文替换成中文,如下 swap= thisComp.layer(“Segment settings”).effect("%")(“Checkbox”);if(swap==true){s=thisComp.layer(“Segment se…

PS通过AXI-LITE配置PL端输入

第一步:根据需要配置的参数数量配置一个AXI-LITE IP 包括:输出端口,内部控制信号等。 第二步:在配置过程中为IP设置存储的位置 第三步:在PS中约定把数据写入该地址的方法: 例如:https://www.cnblogs.com/VerweileDoch/p/18080046 第四步:输出参数并且使用

快捷自由定时重启、注销、关机

首先,需要用到的这个工具:度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 1、打开工具,进入定时器编辑版块 2、左侧目录新建一个定时器 3、选择需要的周期,这里是每天0点,一次执行一条 4、添加具体事件 5、选 重启 6、也有关机、注销等等 7、添加完成,如果需要,可以继…