1655: 手套
时间限制: 1 Sec内存限制: 128 MB
提交: 25解决: 13
[提交][状态][讨论版]
题目描述
你现在有N对手套,但是你不小心把它们弄乱了,需要把它们整理一下。N对手套被一字排开,每只手套都有一个颜色,被记为0~N-1,你打算通过交换把每对手套都排在一起。由于手套比较多,你每次只能交换相邻两个手套。请你计算最少要交换几次才能把手套排整齐。
输入
输入第一行一个N,表示手套对数。
第二行有2N个整数,描述了手套的颜色。每个数都在0~N-1之间,且每个数字都会出现恰好两次。
输出
一行,包含一个数,表示最少交换次数。
样例输入
2
0 1 0 1
样例输出
1
提示
30%的数据N≤9;

60%的数据N≤1000;

100%的数据N≤200,000。

解题思路
首先看到题目想到暴力模拟贪心求解O(n^2)算法对于数据一定超时;于是进行优化,大胆假设对手套进行重新编号就发现交换次数竟然和逆序对的模板的规律类似,于是发现可以用逆序对求解; 但是还是要求证的(不然会想班长大人一样爆零)
命题:上述操作的次数等于重新编号后数组的逆序对个数
引理:先对哪对手套进行操作并不影响答案(口糊见上)
证明:我们先把剩余数组中重新编号最小那对手套换完。所以我们只需要交换那后半只手套到第二的位子就可以了 要交换的次数是原序列中编号这对手套的 得证啦!
卡点
1.注意变量名不要冲突;
2.一般求解逆序对的过程中要把最后的答案改为long long否则会炸点;
3.数组开两倍较好;
代码:
#include<cstdio>
using namespace std;
int a[400005],b[400005],t[400005];
int n,q;long long ans;
void merge(int p,int r){if(p>=r)return;int m=(p+r)>>1;merge(p,m);merge(m+1,r);int i=p,j=m+1,k=p;while(i<=m&&j<=r)if(a[i]<=a[j])t[k++]=a[i++];else{t[k++]=a[j++];ans+=m-i+1;}while(i<=m)t[k++]=a[i++];while(j<=r)t[k++]=a[j++];for(int x=p;x<=r;x++)a[x]=t[x];
}
int main(){scanf("%d",&n);for(int i=1;i<=n*2;i++){scanf("%d",&a[i]);if(b[a[i]]==0)b[a[i]]=++q;}for(int i=1;i<=n*2;i++)a[i]=b[a[i]];merge(1,2*n);printf("%lld",ans);return 0;
}

心得
1.要注意题目与模板的转换,观察出两者的联系而不是一味地模拟以寻求正解否则会适得其反;
2.ans的值一定要想清楚了再做,千万不要越界;
3.逆序对的应用与分治算法有关,要注意分治的递归树一定画对,千万不要出错。

luooj P1655手套相关推荐

  1. 2022-2028年中国橡胶手套行业市场研究及前瞻分析报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了XXX行业相关概述.中国XXX行业运行环境.分析了中国XXX行业的现 ...

  2. 2022-2028年中国TPE手套行业市场全景调查及发展策略分析报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了TPE手套行业相关概述.中国TPE手套行业运行环境.分析了中国TPE ...

  3. 2022-2028年中国无菌手套产业发展动态及投资趋势预测报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了无菌手套行业相关概述.中国无菌手套行业运行环境.分析了中国无菌手套行 ...

  4. 2022-2028年中国硅胶手套产业竞争现状及发展趋势分析报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了硅胶手套行业相关概述.中国硅胶手套行业运行环境.分析了中国硅胶手套行 ...

  5. 2022-2028年中国胶片手套行业市场研究及前瞻分析报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了胶片手套行业相关概述.中国胶片手套行业运行环境.分析了中国胶片手套行 ...

  6. 2022-2028年中国白手套行业市场全景调查及发展前景分析报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了白手套行业相关概述.中国白手套行业运行环境.分析了中国白手套行业的现 ...

  7. Meta 研发触觉手套助力元宇宙,虚拟世界也可以有触觉

    编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 你不能戴着 Meta 的新型高科技虚拟现实手套抚摸狗. 但研究人员可以让它越来越接近. Meta(前身为 Facebook)伴随 ...

  8. 7年秘密研发,Meta拿下元宇宙「登月项目」!气动手套让指尖有真实触感

    视学算法报道   编辑:好困 小咸鱼 [新智元导读]近日,Meta首次展示了秘密研发了七年的项目:「气动触觉手套」,颇具科幻魅力.这种触觉手套可以通过气囊让你体验到抓取虚拟物体时的真实触感.对于Met ...

  9. 电容屏:为什么带手套无法进行操作手机?

    过年的时候,堂哥又问我,啥时候能做出来戴个手套也能操作的手机就牛掰了.之前也奇怪,为什么戴上手套就不能操作了,尤其是短信聊天的时候又冷又不方便.有时候戴上手套其实也是可以操作,不过只是偶尔才能成功. ...

最新文章

  1. Java之Number类
  2. vue-element-admin后台管理模板脚手架
  3. mysql 删除时间一个星期_15天快速学习 数据库Mysql 基础操作命令(第一章)
  4. 数据库 统计数据收集 有什么作用_《原神》荒山孤剑录2/5收集汇总 荒山孤剑录作用是什么...
  5. mfc combo box 控件使用方法总结
  6. 8-汇编语言数据长度及寻址-bx/si/di/bp+ss+ptr+div+dd+dup
  7. 2021-06-28获取,更新,删除DOM节点
  8. oracle混音插件教程,Waves插件个人经验谈
  9. ansible远程在Windows server 2012 R2 安装vcredist(2008 2010 2012 2013)
  10. OpenGL的安装(GLFW+GLAD)
  11. spring项目启动慢问题
  12. package.json文件^和~区别
  13. python_IED工具下载(pycharm)_windows版
  14. python软件电脑配置要求-Python实现的读取电脑硬件信息功能示例
  15. 云服务器和vps二者的区别
  16. pdo mysql dsn_使用PDO构造函数连接数据库及DSN详解
  17. 在查找预编译头时遇到意外的文件结尾
  18. 约瑟夫环 -- 丢手绢问题
  19. UR5 Gazebo仿真配置(不使用MoveIt)
  20. AIoT赋能保险业新发展

热门文章

  1. 视频webm怎么转换成mp4
  2. r语言nonzerocoef函数_lars算法R语言操作指南.pdf
  3. [培训-DSP快速入门-3]:C54x DSP内存资源与内存空间分布
  4. Linux系统日志管理
  5. D2x神符之语中英文对照图文豪华版
  6. js将url转换二维码
  7. 携程回应大数据杀熟并致歉 二次支付无票是系统Bug
  8. Unity PC 打包后文件夹
  9. JavaScript中__proto__、prototype和constructor的详细讲解【1】
  10. matlab实现5自由度雄克机器人的运动仿真