当前位置: 首页 > java >正文

2023年河南CCPC->F题

这是一道有关于滑动窗口的题目

题目链接:https://codeforces.com/gym/104354/attachments

 对于这道题可以用两种方法(实则是一种)

1-小根堆中存每两个元素的差值,然后用窗口去滑每一个子区间,遍历找出最小答案

#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define PII pair<int,int>
#define fi first
#define se second
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
const int N =5e5+10; 
int a[N];
priority_queue<PII,vector<PII>,greater<PII>> q;void solve()
{int n,k;cin>>n>>k;for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+1+n);for(int i=2;i<=k;i++) q.push({a[i]-a[i-1],i});int ans=1e18;for(int i=k;i<=n;i++){q.push({a[i]-a[i-1],i});while(!q.empty()&&i-k+1>q.top().se)//如果i-k>q.top.se了说明当前的窗口已经不包含这两个元素了{q.pop();}ans = min(ans,q.top().fi*(a[i]-a[i-k+1]));}cout<<ans<<endl;
}
signed main()
{IOSint T=1;
//	cin>>T;while(T--) solve(); return 0;
} 

2-小根堆中用于存放当前包含a[i]和a[i-1]的窗口,然后遍历每一个差值,找出包含这两个元素的窗口的max的最小值

#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define PII pair<int,int>
#define fi first
#define se second
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
const int N =5e5+10; 
int a[N];
priority_queue<PII,vector<PII>,greater<PII>> q;void solve()
{int n,k;cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+1+n);PII mx; mx.fi = a[k]-a[1];mx.se =1;int mi = a[2]-a[1];int ans = mi*mx.fi;q.push(mx);for(int i=2;i<=n;i++){int l = q.top().se;while(!q.empty()&&l+k-1<i){q.pop();l = q.top().se;}mx = q.top();mi = a[i]-a[i-1];ans = min(ans,mx.fi*mi);int x;if(i+k-1<=n) x = a[i+k-1]-a[i];else x = a[n]-a[n-k+1];q.push({x,i});}cout<<ans<<endl;
}
signed main()
{IOSint T=1;
//	cin>>T;while(T--) solve(); return 0;
} 

http://www.xdnf.cn/news/6508.html

相关文章:

  • 从零实现一个高并发内存池 - 3
  • 数字孪生技术于航天航空领域的应用探索
  • LocalDateTime类型的时间在前端页面不显示或者修改数据时因为LocalDateTime导致无法修改,解决方案
  • 远程实时控制安卓模拟器技术scrcpy
  • Linux云计算训练营笔记day09(MySQL数据库)
  • 多系统环境下,如何构建高效的主数据管理体系?
  • Vue2在子组件上使用v-model实现数据的双向绑定、.sync修饰符
  • 图深度学习、EMD和VMD详解
  • 受控组件和非受控组件的适用场景分别是什么?
  • AMGX里“One-ring“和“Two-ring“概念和解释
  • Ubuntu操作合集
  • 典型的**N+1查询问题**
  • 使用CMake中的configure_file命令自动生成项目版本信息
  • 【好用的工具】连服务器进入base指令
  • X-Ray,XRD,XRF,XPS有什么区别?
  • 【文件上传漏洞】
  • 面试从微前端拓展到iframe是如何通信的
  • 初始化一个Springboot项目
  • 基于正点原子探索者开发板的简易音乐播放器
  • doris节点数量规划
  • 设计并应用一个IIR-ButterWorth-Filter的例子
  • 前端工程化
  • MySQL如何查看某个表所占空间大小?(表空间大小查看方法)
  • C#自定义控件-实现了一个支持平移、缩放、双击重置的图像显示控件
  • AMC8 -- 2009年真题解析(中文解析)
  • RHCA笔记
  • 高效电脑隐私信息清理实用工具
  • AIStarter使用技巧|如何通过日志判断项目启动完成?倒计时设置与脚本优化方法详解
  • 计量——检验与代理变量
  • 低分辨率运行安卓模拟器: