幻化

传送门

晚上chipizz同学突然问我这道题,然后我口胡了一下先把aaa数组的i" role="presentation" style="position: relative;">iii位变成iii然后再把b" role="presentation" style="position: relative;">bbb改成对应映射再求逆序数
然而第一个样例就不对・(PД`q。)・゜・

emmm,事实上是自己思路有问题,i,ji,ji,j位置的数字交换不等效与一位一位swapswapswap过去.

对于i,ji,ji,j两个位置的数字交换后,单个数而言的最小cost=|i−j|2cost=|i−j|2cost=\frac{|i-j|}{2},这一点很容易想到,但事实上大部分数不是一步到位的,这里我们假设didid_i是aiaia_i到iii的距离,设ans=∑i=1ndi" role="presentation" style="position: relative;">ans=∑ni=1dians=∑i=1ndians=\begin{equation*}\sum_{i=1}^nd_i\end{equation*}
实际上,每一次iii到ai" role="presentation" style="position: relative;">aiaia_i中必定存在一个posx<=iposx<=iposx,我们每次交换ai和posx的数字x,然后再从pos=x的位置交换到ai位置ai和posx的数字x,然后再从pos=x的位置交换到ai位置a_i和posx的数字x,然后再从pos=x的位置交换到a_i位置便可得到最优解,
实际上也不用考虑这么麻烦,我们可以想象一下每一次交换之后ansansans都在减小,说明每一次交换并不会增加我们要的costcostcost.
结合之前的部分正确想法,我们可以得到convai=iconvai=iconv_{a_i}=i
那么实际上的cost=12∑ni=1|i−convbi|cost=12∑i=1n|i−convbi|cost=\frac{1}{2} \begin{equation*}\sum_{i=1}^n|i-conv_{b_i}|\end{equation*}

代码就很简单啦

#include<cstdio>
#include<iomanip>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<vector>
#include<set>
#include<queue>
#include<limits.h>
#include<string.h>
#include<map>
#include<list>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;#define inf int(0x3f3f3f3f)
#define mod int(1e9+7)
#define eps double(1e-6)
#define pi acos(-1.0)
#define lson  root << 1
#define rson  root << 1 | 1int a[200005];
int b[200005];int conv[200005];int n;int main()
{int zu;scanf("%d",&zu);while(zu--){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]),conv[a[i]]=i;for(int i=1;i<=n;i++)scanf("%d",&b[i]);ll ans=0;for(int i=1;i<=n;i++)ans+=abs(i-conv[b[i]]);printf("%lld\n",ans/2);}
}

华中农业大学第六届程序设计大赛网络同步赛 J.幻化(思维)相关推荐

  1. 陕西师范大学第七届程序设计竞赛网络同步赛 J 黑猫的小老弟【数论/法拉数列/欧拉函数】...

    链接:https://www.nowcoder.com/acm/contest/121/J 来源:牛客网 题目描述 大家知道,黑猫有很多的迷弟迷妹,当然也有相亲相爱的基友,这其中就有一些二五仔是黑猫的 ...

  2. 2022年 文远知行杯 GDUT 第十六届程序设计竞赛(同步赛) 部分题解

    今年做出来的题还没去年多,看来是题目质量高了(我又变菜了). 同步赛地址:文远知行杯广东工业大学第十六届程序设计竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJB B ...

  3. 陕西师范大学第七届程序设计竞赛网络同步赛题解

    心累,昨天一天3个比赛,全部炸掉,这个陕西师范的比赛我真的读不懂题目,只搞出来7题,难受 A,B,F签到题,不讲了,只讲C,D,I,K 链接:https://www.nowcoder.com/acm/ ...

  4. 华中农业大学第五届程序设计大赛网络同步赛-G

    G. Sequence Number In Linear algebra, we have learned the definition of inversion number: Assuming A ...

  5. 华中农业大学第五届程序设计大赛网络同步赛解题报告2(转)

    今天实在累了,还有的题晚点补.... 题目链接:http://acm.hzau.edu.cn/problemset.php?page=3 题目:acm.hzau.edu.cn/5th.pdf A:Li ...

  6. “青软杯”安徽科技学院第六届程序设计大赛_专业组

    Contest - "青软杯"安徽科技学院第六届程序设计大赛_专业组 Start time:  2015-04-18 08:00:00.0  End time:  2015-04- ...

  7. 2023年中国传媒大学程序设计大赛(同步赛)A — E

    2023年中国传媒大学程序设计大赛(同步赛) A. ACM 题目分析 根据输入打出相对应个数的0即可 code #include<bits/stdc++.h>using namespace ...

  8. 弟弟的作业(湖南省第六届程序设计大赛)

    题目描述 你的弟弟刚做完了"100以内数的加减法"这部分的作业,请你帮他检查一下.每道题目(包括弟弟的答案)的格式为a+b=c或者a-b=c,其中a和b是作业中给出的,均为不超过1 ...

  9. 哈理工第六届程序设计大赛 G 逃脱(BFS)

    思路:一开始我预处理了每个格子被火燃烧的最短时间然后BFS,WA到不能自理,后来没预处理直接都扔进队列里就A了... #include<bits/stdc++.h> using names ...

最新文章

  1. Linux远程拷贝下载文件
  2. [数据库]简单SQL语句总结
  3. 网站建设想要出类拔萃还要从基础上做创新
  4. 基于FPGA的通用8251串行异步收发器(6600+字)
  5. three.js加载3d模型_可加载5亿多边形,InsiteVR推Quest端BIM协作应用《Resolve》
  6. mysql 写磁盘_图解MySQL | [原理解析] MySQL insert 语句的磁盘写入之旅
  7. python捕获全局异常统一管理_python中如何用sys.excepthook来对全局异常进行捕获、显示及输出到error日志中...
  8. ajax拼接外部变量,在ajax调用中访问函数外部变量的问题
  9. 【数据结构与算法】双链表的Java实现
  10. 新浪uc2010官方下载
  11. js 图片压缩上传(base64位)以及上传类型分类
  12. 客服机器人代码_电脑问题不会解决?小白智能客服来帮你!
  13. ubuntu lvm mysql vg_使用LVM快照做mysql完全备份和lvm的扩容
  14. 使用netkit搭pppoe服务器
  15. Bailian2715 谁拿了最多奖学金【分段计算处理】(Vijos P1001)
  16. 第一节:用Cube学32之简单IO口操作(点灯及按键)
  17. Jquery如何操作Table的某一个td
  18. 511遇见易语言大漠模块制作教程找图FindPic
  19. coolpro2 剪切并淡出
  20. Javascript闭包 ,JS中没有public,private等修饰词,里面的变量就分为globle和局部变量

热门文章

  1. Android Notification设置的小图标显示的是小方块
  2. Docker在Linux上下载与安装配置
  3. 中国燃气热泵(GHP)行业前景动态与发展趋势预测报告2022-2027
  4. Android11 Wifi Mac地址设置随机或者固定分析
  5. S60 V3手机软件的点点滴滴
  6. 如何用 BandiFix 修改损坏的AVI文件视频
  7. 搞笑来拍照,WP芒果拍照APP精选
  8. 九型人格------Peacemaker
  9. 计算机装固态硬盘,固态加机械硬盘如何搭配 朗科240G固态硬盘是最佳选择!
  10. 一款简单实用的视频分割软件,快速将一段视频分割成两段