B. Swaps(双指针)

题目入口

思路
我们可以发现操作步数是由a移动的步数和b移动数量组成,为了使a严格小于b,由于a和b数组没有相同元素,所以必满足a[1]<b[1],而对于每个数组移动步数就是他们的坐标减1,暴力做法是我们枚举a的所有元素,再对b进行查找,这样复杂度O(n²),显然超时,若我们对a数组进行排序,并且记录他的原坐标,再对b数组进行查找,由于a数组满足a[i[<a[i+1],因此若b[j]>a[i],则当a到a[i+1]时,b中j前面的元素一定小于a[i+1],于是便不用从头遍历,由于b中元素只遍历一遍,因此复杂度为O(n),排序O(nlogn)最终复杂度O(nlogn)。

代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
const int inf=0x3f3f3f3f;
struct a_
{int v,p;friend bool operator < (const a_ x,const a_ y){return x.v<y.v;}
}a[N];
int b[N];
int main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t;cin>>t;while(t--){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i].v;a[i].p=i;}for(int i=1;i<=n;i++){cin>>b[i];}sort(a+1,a+n+1);int res=inf;int j=1;for(int i=1;i<=n;i++){while(b[j]<a[i].v&&j<=n) j++;res=min(j+a[i].p-2,res);}cout<<res<<endl;}return 0;
}

B. Swaps(双指针)相关推荐

  1. Codeforces Round #743 (Div. 2) B. Swaps 思维

    题目地址Codeforces Round #743 (Div. 2) B. Swaps 题意很好懂,这里就不复述了. 思路:因为是要让a小于b,所以可以用双指针,在b数组中找到第一个大于a数组中第i个 ...

  2. Leetcode 15.三数之和 双指针 or 暴力哈希

    题目链接:传送门 题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组. 暴力+ ...

  3. 技术图文:双指针在求解算法题中的应用

    背景 前段时间,在知识星球立了一个Flag,这是总结Leetcode刷题的第三篇图文. 理论部分 Python list 的源码地址: https://github.com/python/cpytho ...

  4. 技术图文:双指针在链表问题中的应用

    背景 最近这段时间团队在进行算法刻意练习活动,我带着同学们刷 leetcode 的"腾讯精选练习(50)题",参见:我是如何组织"算法刻意练习活动"的? 在做题 ...

  5. 双指针问题最简单的教程(1)

    什么样的问题适合用双指针技巧?当问题是从一个有序的数组或链表中,找到一个元素的子集,该子集需要满足某种限制. 这时候就特别适合用双指针.这个子集可能是某两个元素,某三个元素,甚至是一个子数组. 1 举 ...

  6. [SCOI2009]生日礼物 双指针

    题意: 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠,但多个彩珠也可以出现在同 ...

  7. 单链表-逆置单链表(头插法且双指针)

    题意: 采用带头结点的单链表,设计一个算法将其就地逆置,所谓"就地"是指辅助空间O(1). 这里可以有两种方法做: 1.头插法且双指针 2.改变指针指向且三指针 两方法共同点: 头 ...

  8. 数组-合并两个有序数组(双指针,从后往前)

    题意: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 ...

  9. 可以比较两个指针是否相等_算法一招鲜——双指针问题

    什么是双指针(对撞指针.快慢指针) 双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的. 换言 ...

最新文章

  1. 06.SQLServer性能优化之---数据库级日记监控
  2. 观点PK_倘若做不好AI,云服务商还能勇往直前吗?
  3. 谷歌最新开源BundleTrack: 无需任何CAD模型的6D物体姿态跟踪算法
  4. Spark学习之路(二)
  5. pom文件报错_maven-resources-plugin修改了我的文件
  6. java图片识别查看器模拟_[转载]windows照片查看器无法显示图片内存不足
  7. Hive简单实际操作(二)
  8. thinkpad重装系统不引导_4个步骤,轻松解决电脑重装系统【蓝屏】
  9. PowerDesigner-制作Word导出模版
  10. 网络分析shell脚本(实时流量+连接统计)
  11. EventLoop-浏览器与Node.js--整理
  12. GitHub 桌面版 v3.0 新特性「GitHub 热点速览 v.22.18」
  13. C# IntPtr类型转换
  14. python模拟鼠标点击脚本_python模拟鼠标点击和键盘输入的操作
  15. 结构化程序设计方法和面向对象程序设计方法的区别
  16. 电动48V/60V自行车/摩托车/观光车电池检测设备,满足GB38031新国标测试
  17. 传奇私服服务器移动玩家位置,传奇私服服务端里面哪个是玩家数据文件文件?...
  18. html5画布获取位置,html5画布绘制位置不正确(html5 canvas drawing position not correct)
  19. ios 收藏app内容或网页到手机桌面
  20. java 绘图板_java绘图板

热门文章

  1. 7z001怎么解压在安卓手机上面_安卓手机怎么可以远程阿里云服务器桌面
  2. 【工具】VScode|Linux 中怎么调试 Python 项目比较方便?又名 VScode 怎么调试 Python 项目(兼容环境Ubuntu18.04)
  3. Tik Tok怎么赚钱?零基础电商卖家新手快速入行指南
  4. 今天教你5种爆款标题,自媒体短视频标题写得好,月入过万少不了
  5. AR互动大屏项目实战
  6. MFC AFX_EXT_CLASS
  7. Python视频制作 MoviePy框架afx音频效果示例
  8. openwrt php 编译环境,openwrt基础编译教程
  9. 前端存储之cookie、localStorage、sessionStorage、indexDB
  10. 哪个求职App最容易找到好工作?2019在线求职招聘市场研究报告