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

CF45C Dancing Lessons 题解

CF45C Dancing Lessons 题解

不就是洛谷的 P1878 吗,雾。

暴力的时间复杂度是 O(n2)O(n^2)O(n2) 的,考虑优化。

考虑使用优先队列。内部存三个元素:绝对值、左边的孩子、右边的孩子。

这样我们重载运算符可以以绝对值为第一关键字,左边的孩子为第二关键字进行排序。

然后我们每次抽出来的一对小朋友他们的左边和右边都是有可能对答案产生贡献的,所以可以用链表进行维护。

最后还要判个重,这个打个标记即可。

还有不懂的就看代码吧。

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,a[N];
bool kd[N],vis[N];
vector<pair<int,int> > ans;
struct LIST{int l,r;
}lst[N];
struct NODE{int val,l,r;bool operator < (const NODE &x)const{if(val!=x.val)return x.val<val;if(l!=x.l)return x.l<l;return x.r<r;}
};
priority_queue<NODE> pq;
int main(){ios::sync_with_stdio(0);cin>>n;for(int i=1;i<=n;++i){char ch;cin>>ch;if(ch=='B')kd[i]=1;}for(int i=1;i<=n;++i)cin>>a[i];for(int i=1;i<=n;++i)//初始化链表lst[i].l=i-1,lst[i].r=i+1;
//	lst[1].l=n;lst[n].r=1;
//	for(int i=lst[0].r;i;i=lst[i].r)cout<<lst[i].uid<<' ';
//	cout<<'\n';for(int i=1;i<n;++i)if(kd[i]!=kd[i+1])pq.push((NODE){abs(a[i]-a[i+1]),i,i+1});//初始值while(!pq.empty()){int l=pq.top().l,r=pq.top().r;pq.pop();if(vis[l]||vis[r])continue;ans.push_back(make_pair(l,r));vis[l]=vis[r]=1;lst[lst[l].l].r=lst[r].r;lst[lst[r].r].l=lst[l].l;int x=lst[l].l,y=lst[r].r;if(x<1||x>n||y<1||y>n)continue;//在链表中,1的左边是0,n的左边是n+1,不合法if(kd[x]!=kd[y]){if(x<=y)pq.push((NODE){abs(a[x]-a[y]),x,y});elsepq.push((NODE){abs(a[x]-a[y]),y,x});}}	cout<<(int)ans.size()<<'\n';for(int i=0;i<(int)ans.size();++i)cout<<ans[i].first<<' '<<ans[i].second<<'\n';return 0;
}

AC 记录。

http://www.dtcms.com/a/461653.html

相关文章:

  • Docker 容器 -- 编写你的第一个 Dockerfile
  • 做的好的网站开发网站空间200m
  • 虚拟机怎么做网站上海做网站天锐
  • 网站优化要怎么做才会做到最佳百度站长统计
  • ALV 单元格控制案例
  • 网站被墙 做301跳转服务器正常网站打不开
  • maven mvn 安装自定义 jar 包
  • Flink 广播状态(Broadcast State)实战从原理到落地
  • 苏州市吴江区住房和城乡建设局网站网站开发的项目开发
  • 基于MBSE的系统设计和流程合规实例
  • 【文件读写】18,21关
  • Turbopack vs Webpack vs Vite:前端构建工具三分天下,谁将胜出?
  • 如何外贸网站推广网站建设与管理试题及答案
  • 广州建网站维护公司wordpress 手机不显示内容
  • 水位流量在线监测装置:精准监测与智能管理的科技基石
  • mac下解压jar包
  • 收费网站怎么制作山东省建设执业资格注册管理中心网站
  • 腾讯云网络vpc之arping返回MAC一样问题
  • 网站建设网页设计案例网站开发的外文文献
  • 西安优化网站推广宁波做网站排名的公司有哪些
  • 库、编译器有一个错误:undefined reference to `stat64@GLIBC_2.33‘
  • npm uninstall 执行的操作、有时不会删除 node_modules 下对应的文件夹
  • Unity网络开发--套接字Socket(2)
  • 大学网站建设技术方案wordpress 评论优化
  • 做网站设计要注意什么问题wordpress 枚举用户
  • 基于单片机的Boost升压斩波电源电路
  • 【Emmy精简系统】清爽加速Windows 11 25H2
  • 洛谷P2071 座位安排
  • 广西代理网站建设公司公司网站建设注意点
  • 设计模式--外观模式:简化复杂系统的统一接口