牛客练习赛$48E$ 小$w$的矩阵前$k$大元素 堆
正解:堆
解题报告:
考虑把$b$从大往小排序,然后把$a_1+b_1,a_2+b_1,...,a_n+b_1$丢到堆里,顺便记录下$b$的下标
然后每次拿出一个最大值,设为$mx=x+b_i$,就把$x+b_{i+1}$丢进去就成
$over$
然后拓展以下$q$的范围是$m\cdot n$的时候怎么做昂$QAQ$
考虑把$a,b$分别排序,然后二分这个第$k$大是多少,发现$b$的数量是递增的,所以随便维护一下,$check$的复杂度就$O(m+n)$的
然后总的复杂度大概是$O((m+n)\times \log{1e9})$?
($upd:$
$dbq$我康了眼题发现我之前看到的是简略版,,,所以有些细节就忽略掉了$QAQ$
再说点儿细节趴
首先它这个题目里是多次询问,而且$x,y$的范围是变化的
但是注意到每次$x,y$都是单调不降的所以没有关系,只是对$b$的话直接开个$multiset$趴,方便些其实$QwQ$
然后就没了?其实也差不多的$QwQ$
昂然后关于那个法二可能就不太对了,,,放下原来的法二可做的题面趴$QwQ$
给一个长度为$n$的序列$a_i$和一个长度为$m$的序列$b_i$,定义一个$n\times m$的矩阵$C$满足$c_{i,j}=a_i+b_j$,求这个矩阵内的前$K$大元素之和
($updd:$
$umm$我用我前面写的方法然后发现$T$了,,,$QAQ$
要优化下,怎么优化呢?就把$a,b$全放到$set$里面,这样状态数就更少了$QwQ$
然后差不多的拓展方式?只是要注意现在变成双向拓展了嘛,但是又不能枚举重复状态,所以就加个状态限制的就能保证不重不漏了$QwQ$
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define ri register int
#define rc register char
#define rb register bool
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i)
#define e(i,x) for(ri i=head[x];i;i=edge[i].nxt) const int N=1e5+;
int n,m,q,a[N],b[N],numa=,numb=;
multiset<int>Sa,Sb;
struct node{multiset<int>::iterator ita,itb;bool zt;}; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
bool operator < (node gd,node gs){return *gd.ita+*gd.itb>*gs.ita+*gs.itb;}
il char rd(){rc ch=gc;while(ch!='R' && ch!='D' && ch!='Q')ch=gc;return ch;}
il void work3()
{
priority_queue<node>Q;Q.push((node){Sa.begin(),Sb.begin(),});
ri tmp=read();
rp(i,,tmp)
{
multiset<int>::iterator ita=Q.top().ita,itb=Q.top().itb;bool zt=Q.top().zt;Q.pop();
printf("%d ",*ita+*itb);
++ita;if(zt && ita!=Sa.end())Q.push((node){ita,itb,});;--ita;
if(++itb!=Sb.end())Q.push((node){ita,itb,});
}
printf("\n");
} int main()
{
freopen("923e.in","r",stdin);freopen("923e.out","w",stdout);
n=read();m=read();q=read();rp(i,,n)a[i]=read();rp(i,,m)b[i]=read();Sb.insert(b[]);Sa.insert(a[]);
while(q--)
{
rc ch=rd();
if(ch=='R'){ri tmp=min(read(),m-numb);rp(i,numb+,numb+tmp)Sb.insert(b[i]);numb+=tmp;}
if(ch=='D'){ri tmp=min(read(),n-numa);rp(i,numa+,numa+tmp)Sa.insert(a[i]);numa+=tmp;}
if(ch=='Q')work3();
}
return ;
}
牛客练习赛$48E$ 小$w$的矩阵前$k$大元素 堆的更多相关文章
- 牛客网在线编程_有序矩阵中第K小的元素
Leetcode378原题,所以一样没有数据范围...( log(max-min)二分答案,然后NlogN二分每一行求出小于答案的元素个数,为了保证二分的答案在矩阵中,二分写的要和平常不太一样,最后输 ...
- 牛客Wannafly挑战赛23 B.游戏
游戏 题目描述 小N和小O在玩游戏.他们面前放了n堆石子,第i堆石子一开始有ci颗石头.他们轮流从某堆石子中取石子,不能不取.最后无法操作的人就输了这个游戏.但他们觉得这样玩太无聊了,更新了一下规则. ...
- 牛客练习赛1 A - 矩阵
链接:https://www.nowcoder.com/acm/contest/2/A来源:牛客网 题目描述 给出一个n * m的矩阵.让你从中发现一个最大的正方形.使得这样子的正方形在矩阵中出现了至 ...
- 牛客小白月赛16 E 小雨的矩阵 ( 暴搜)
链接:https://ac.nowcoder.com/acm/contest/949/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 顺时针打印矩阵 牛客网 剑指Offer
顺时针打印矩阵 牛客网 剑指Offer 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 ...
- 矩阵中的路径 牛客网 剑指Offer
矩阵中的路径 牛客网 剑指Offer 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下 ...
- 19牛客暑期多校 round2 H 01矩阵内第二大矩形
题目传送门//res tp nowcoder 目的 给定n*m 01矩阵,求矩阵内第二大矩形 分析 O(nm)预处理01矩阵为n个直方图,问题转换为求n个直方图中的第二大矩形.单调栈计算,同时维护前二 ...
- 2018牛客网暑期ACM多校训练营(第二场)J Farm(树状数组)
题意 n*m的农场有若干种不同种类作物,如果作物接受了不同种类的肥料就会枯萎.现在进行t次施肥,每次对一个矩形区域施某种类的肥料.问最后枯萎的作物是多少. 分析 作者:xseventh链接:https ...
- 2018牛客网暑期ACM多校训练营(第一场)B Symmetric Matrix(思维+数列递推)
题意 给出一个矩阵,矩阵每行的和必须为2,且是一个主对称矩阵.问你大小为n的这样的合法矩阵有多少个. 分析 作者:美食不可负064链接:https://www.nowcoder.com/discuss ...
随机推荐
- Jmeter监控
https://www.cnblogs.com/saryli/p/6596647.html JMeter是一款压力测试工具,我们也可以用它来监控服务器资源使用情况. JMeter正常自带可以通过Tom ...
- 在线学编程!十大IT在线教育网站推荐
在线学编程!十大IT在线教育网站推荐 1.CSDN学院(http://edu.csdn.net/) CSDN学院是CSDN推出的一个面向中国软件开发者和IT专业人员的技术教育服务平台.主要提供IT领域 ...
- OpenStack☞网关协议
一 动态页面与静态页面区别 静态页面:每一个网页都有一个固定的URL,且网页的URL以.html..htm..shtml等常见的形式为后缀. 网页内容已经发布到网站服务器上,无论是否有用户访问,每个静 ...
- jQuery对html元素的取值与赋值实例详解
jQuery对html元素的取值与赋值实例详解 转载 2015-12-18 作者:欢欢 我要评论 这篇文章主要介绍了jQuery对html元素的取值与赋值,较为详细的分析了jQuery针对常 ...
- Getting started with the basics of programming exercises_1
1.编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替 使用if 结构: #include<stdio.h> #define NONBLANK 'a'; // repal ...
- 洛谷 1602 Sramoc问题
Description 话说员工们整理好了筷子之后,就准备将快餐送出了,但是一看订单,都傻眼了:订单上没有留电话号码,只写了一个sramoc(k,m)函数,这什么东西?什么意思?于是餐厅找来了资深顾问 ...
- laravel 定时任务通过队列发送邮件
https://www.jianshu.com/p/f6b94596098e 关于laravel发送邮件,请先参考我的另一片文章:laravel sendcloud发送邮件,再继续往下看. 1.用da ...
- python -- 类中--内置方法
isinstance 和 issubclass isinstance(obj,b) 检查是否obj是否是类b的对象 class A(object):pass class B(A):pass b=B ...
- hdu 5745 La Vie en rose(2016多校第二场)
La Vie en rose Time Limit: 14000/7000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- Python--day38--JoinableQueue解决生产者消费者模型
############################# # 在消费者这一端: #每次获取一个数据 #处理一个数据 #发送一个记号:标志一个数据被处理成功 #在生产者这一端: #每一次生成一个数据 ...