51nod 1672 贪心/队列
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1672
第一行三个数n,k,m(1<=n<=100000,1<=k<=m<=100000)。
接下来一行n个数ai,表示小A的数列(0<=ai<=10^9)。
接下来m行,每行两个数li,ri,表示每个区间(1<=li<=ri<=n)。
一行表示答案
5 2 3
1 2 3 4 6
4 5
2 5
1 4
10 简化版的是求两个区间相交的最大值,而这个求k个区间相交的最大值,前者是维护一个最大的右端点同理,我们维护k个较大的右端点就好了。
先按照左端点升序排列,这样的话固定了左端点只考虑右端点就好了,每次询问一个区间找到当前队列中右端点最小的那个做交集,之后再判断要不要把当前右端点加入如果更优的话。
#include<bits/stdc++.h>
using namespace std;
#define LL long long
priority_queue<int,vector<int>,greater<int> >q;
LL A[];
struct node{int l,r;}P[];
bool cmp(node A,node B)
{
if(A.l!=B.l) return A.l<B.l;
else return A.r>B.r;
}
int main()
{
int n,m,k,i,j;
LL ans=;
while(cin>>n>>k>>m){
for(i=;i<=n;++i) scanf("%lld",&A[i]),A[i]+=A[i-];A[n+]=A[n];
for(i=;i<=m;++i) scanf("%d%d",&P[i].l,&P[i].r);
if(k==){
for(i=;i<=m;++i)
ans=max(ans,A[P[i].r]-A[P[i].l-]);
}
else{
sort(P+,P++m,cmp);
for(i=;i<=m;++i)
{
if(q.size()<k-) q.push(P[i].r);
else{
ans=max(ans,A[min(q.top(),P[i].r)]-A[P[i].l-]);//一开始写的q.top()导致WA
q.push(P[i].r);
q.pop();
}
}
}
printf("%lld\n",ans);
}
return ;
}
51nod 1672 贪心/队列的更多相关文章
- 51nod 1672 区间交(贪心)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1672 题意: 思路:其实这就是一个经典的区间贪心问题,只需要按照左端点排 ...
- 51nod 1163贪心
用优先队列来贪心,是一个很好地想法.优先队列在很多时候可以维护最值,同时可以考虑到一些其他情况. http://www.51nod.com/onlineJudge/questionCode.html# ...
- [Swust OJ 352]--合并果子(贪心+队列模拟)
题目链接:http://acm.swust.edu.cn/problem/352/ Time limit(ms): 1000 Memory limit(kb): 65535 Description ...
- 51nod 1625 贪心/思维
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1625 1625 夹克爷发红包 基准时间限制:1 秒 空间限制:13107 ...
- 51nod 1099 贪心/思维
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1099 1099 任务执行顺序 基准时间限制:1 秒 空间限制:13107 ...
- 51nod 1428 贪心
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 1428 活动安排问题 基准时间限制:1 秒 空间限制:13107 ...
- (贪心+队列)String
http://acm.hdu.edu.cn/showproblem.php?pid=6586 将26个字母各自放入队列中,并记下每个位置各字母的后缀和.往k个位置贪心的放字母,先从a开始尝试.首先字母 ...
- 51nod 1449 贪心
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1449 1449 砝码称重 题目来源: CodeForces 基准时间限制 ...
- 51nod 1255 贪心/构造
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1255 1255 字典序最小的子序列 题目来源: 天津大学OJ 基准时间限 ...
随机推荐
- SqlProfiler的替代品-ExpressProfiler
可以用来跟踪执行的sql语句.安装SqlServer之后SqlServerManagementStudio自带一个SqlProfiler,但是如果安装的SqlExpress,那就没有了. 项目的主页在 ...
- Jmeter关联技术
JMeter:关联步骤 <1>录制成功,回放失败了: <2>录制两个业务相同的脚本,比对差别,找到动态数据,AptDiff_1.6.zip工具 <3>找到相应请求: ...
- 解决You are using pip version 9.0.1, however version 9.0.3 is available. You should consider upgra
直接运行命令:python -m pip install --upgrade pip
- Java基础—运算符(转载)
转载自:Java运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运 ...
- springboot整合Ehcache
首先引入maven包: <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- uwsgi+nginx项目上线
一.基础环境配置 1.Linux安装配置 1.设置IP地址 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 ...
- Java开发者或许应该经常去看看的网站?...
Java开发者或许应该经常去看看的网站?...Google top3 1.Oracle Technology Network for Java Developers | Oracle Technolo ...
- canvas 视频音乐播放器
canvas 视频音乐播放器 var play_nor_img_path = 'images/play_btn_n.png'; //播放按钮 正常时 60x60 px var play_sec_img ...
- JavaWeb Request和Response
1. Request与Response 1.1. Web应用运行机制 到目前为止,我们已经掌握了Web应用程序的运行机制,现在学习的就是Web应用程序运行机制中很重要的内容 —— Request与Re ...
- MVC6 (ASP.NET5) 认证 (Asp.net identity) cookie模式 自定义认证
1.Startup类的Configure方法中, app.UseIdentity(); 改为 app.UseCookieAuthentication(options => { options.A ...