题目地址:https://ac.nowcoder.com/acm/contest/551/E

题目描述


有两个长度为 n 的序列,a0,a1,…,an−1a0,a1,…,an−1和 b0,b1,…,bn−1b0,b1,…,bn−1。CSL 有一种魔法,每执行一次魔法,可以任意挑选一个序列并任意交换序列中两个元素的位置。CSL 使用若干次魔法,得到最终的序列 a 和 b,并且想要让 a0b0+a1b1+…+an−1bn−1a0b0+a1b1+…+an−1bn−1的值最小化。求解 CSL 至少使用多少次魔法,能够达到最小化的目标。

输入描述:

第一行有一个整数 n,表示序列的长度。接下来两行,每行有 n 个整数,分别表示初始序列 a 和 b。输入数据保证每个序列里的数两两不同。

输出描述:

在一行输出一个整数,表示最少使用的魔法次数。

示例1

输入

2
1 2
1 2

输出

1

示例2

输入

2
1 2
2 1

输出

0

解题思路:


首先会想到让a序列从大到小排,b序列从小到大排,这样a最大的对b最小的,a次大的对b次小的,最终结果最小。

举个例子:

a和b放在同一个结构体中,相当于ai和bi捆绑在一起

a 7 4 5
b 8 7 5 4

将b序列从小达到排

a 5 4 7 8
b 4 5 7 8

令b[i]=i,i从0开始

a 5 4 7 8
b(记为b1) 0 1 2 3

将a序列从大到小排列

a 8 7 5 4
b(记为b2) 3 2 0 1

这样就实现的了a从大到小排,b从小到大排,最后只需要找出b1->b2需要交换多少次数才能实现

观察最终的b2,依次遍历(0≤t<n),设置访问标记数组vis[],计数器值增加的条件为(b2[i]!=i || !vis[i] || !vis[b2[i]])

遍历到t=0时,

b2[0]=3,不等于0,跳到i=3的位置;b2[3]=1,不等于0,跳到i=1的位置;b2[1]=2,不等于0,跳到i=2的位置;b2[2]=0结束;并将这期间访问的所以b值设为已经访问,没跳一次计数器都要加1

在依次遍历其他的值,最后输出计数器的结果

图1.遍历的时候跳转的情况

图2.从b1到b2时的跳转(即交换)情况

可以看出,从b1变换到b2跳转的情况实际上就是遍历过程中跳转情况的逆序,所以遍历过程中每跳转一次则表明b1->b2有一次交换,计数器+1

ac代码:


#include <iostream>
#include <algorithm>
#include <string.h>
#include <ctype.h>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <sstream>
#define  maxn 100005
using namespace std;
typedef long long ll;
struct node{ll a,b;
}s[maxn];
ll n,ans=0,vis[maxn]={0};
bool cmpa(node s1,node s2)
{return s1.a>s2.a;
}
bool cmpb(node s1,node s2)
{return s1.b<s2.b;
}
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);scanf("%lld",&n);for(ll i=0;i<n;i++)scanf("%lld",&s[i].a);for(ll i=0;i<n;i++)scanf("%lld",&s[i].b);sort(s,s+n,cmpb);for(ll i=0;i<n;i++)s[i].b=i;sort(s,s+n,cmpa);for(ll i=0;i<n;i++){if(s[i].b==i || vis[i] || vis[s[i].b])continue;ll now=s[i].b;do{ans++;vis[now]=1;now=s[now].b;vis[now]=1;}while(now!=i);}printf("%lld",ans);return 0;
}

【“新智认知”杯上海大学联赛】E-CSL的魔法(序列b到序列b‘需要的数据交换次数)相关推荐

  1. “新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛 B.CSL 的英语考试

    CSL 的英语考试 CSL 为了备战即将到来的六级考试,在外面报了一个英语培训班.经过了一学期的学习后,英语老师决定要对 CSL 的学习成果进行检测.老师准备了一份卷子,考虑到 CSL 的英语水平,卷 ...

  2. “新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛----G-CSL的训练计划

    首先发出题目链接: 链接:https://ac.nowcoder.com/acm/contest/551/F 来源:牛客网 涉及:有向图 题目如下: 题目意思(表示我太chun,读了几遍才勉强明白了题 ...

  3. 智源杯天文数据算法挑战赛开赛,前沿AI技术助力天文科学研究

    由北京智源人工智能研究院主办,国家天文台.数据评测平台biendata联合举办的天体分类数据竞赛于2020年1月开赛.本次比赛旨在鼓励大众参与到天文学的探索当中,利用最新的人工智能算法分析望远镜收集到 ...

  4. 蓝驰创投朱天宇:用10年尺度看 AI 创业,如何发现独角兽 | 新智元专访

    2017年1月20日,新智元百人会闭门论坛,蓝驰创投管理合伙人朱天宇从投资人的角度,带来<用10年的尺度看AI 创业,对下一个创新周期思考>的主题分享. 在分享开始前,朱天宇拿出了一本&l ...

  5. 中国AI行业走向:新人胜旧人还是 BAT 牢牢掌握价值链顶端? | 新智元投资领袖论坛...

    2017年3月27日,在新智元开源·技术峰会的AI 投资领袖论坛,在北京大学人工智能创新中心主任雷鸣的支持下,红杉资本中国基金合伙人计越:高瓴资本集团合伙人洪婧:蓝驰创投管理合伙人朱天宇:中科招商集团 ...

  6. 新智元【Yoshua Bengio 亲自解答】机器学习 81 个问题及答案(最全收录)

    原文地址:http://valser.org/thread-828-1-1.html 新智元编译1 来源:Quora 译者:张巨岩  王婉婷  李宏菲  戴秋池 这是 Quora 的最新节目,针对特定 ...

  7. 徐立:1200层神经网络夺冠ImageNet,深度学习越深越好?| 新智元 AI 领军人物专访...

    人工智能领域的创业浪潮中,计算机视觉技术(CV)可以说是一个较为火热的方向,呈遍地开花之势.在这片江湖中,有四家公司特别突出,有 CV 领域的"一桶筐汤" 之称,可以看成是具有巨大 ...

  8. 第八届育才杯机器人比赛_疫情防控常态化,传统赛事新转型 “育才杯”第九届青岛国际象棋学校锦标赛(网络)顺利举办...

    原标题:疫情防控常态化,传统赛事新转型 "育才杯"第九届青岛国际象棋学校锦标赛(网络)顺利举办 "育才杯"青岛市国际象棋学校锦标赛是一项传统赛事,去年举办了第八 ...

  9. DeepMind哈萨比斯对话哈里王子:2018年AI最大的突破在生物或化学 2017-12-29 新智元 新智元报道 编辑:刘小芹 胡祥杰 【新智元导读】BBC 电台第四台连续第14年在

    DeepMind哈萨比斯对话哈里王子:2018年AI最大的突破在生物或化学 2017-12-29新智元 新智元报道 编辑:刘小芹  胡祥杰 [新智元导读]BBC 电台第四台连续第14年在圣诞和新年之间 ...

  10. 【深度学习看手相】台湾学生获奖 AI 项目是科学还是伪科学? 搜狐科技 08-06 12:44 1新智元报道 来源: medium,facebook 编译:胡祥杰 张易 【新智元导读】本周日带来一个有

    [深度学习看手相]台湾学生获奖 AI 项目是科学还是伪科学? 搜狐科技 08-06 12:44 1新智元报道 来源: medium,facebook 编译:胡祥杰 张易 [新智元导读]本周日带来一个有 ...

最新文章

  1. 局部敏感哈希算法(Locality Sensitive Hashing)
  2. 华为云专家向宇:工欲善其事必先利其器,才能做数据的“管家”
  3. 遍历字典_十三、Python字典三种遍历方法
  4. java 多线程 实例浅析
  5. 阿里Q2财报:阿里云势头猛进领跑全球
  6. T-SQL 之 DDL语法
  7. 58-20210406华为海思Hi3516DV300的linux系统下获取IMX335的视频(eMMC模式)
  8. 中科微GPS模块使用教程 ATGM332D ATGM336H GSP模块 单片机程序 C程序
  9. 信息系统分析与设计(第四版)期末复习提纲
  10. 数学建模overleaf模板_数学建模论文模板及套路
  11. Docker 教程:如何将Helix QAC作为容器创建并运行 上
  12. 从零开始的泡泡龙游戏
  13. Java的Abstraction抽象类/方法-笔记
  14. PyTorch基础:数据处理(数据加载、GPU加速)
  15. Jett+Spring MVC实现Excel导出
  16. java jsoup解析开彩网api接口json数据实例
  17. 1.4 计算机网络的定义和分类
  18. 关于十六进制、asc码
  19. 【我的生活】旅游计划--2019
  20. qt textbrowser 设置字体颜色

热门文章

  1. linux vi只写入1个字节,关于linux命令的说明(这是一个命令集)
  2. 详解 undefined 与 null 的区别
  3. java 各种数据结构,几种常见的数据结构的JAVA实现
  4. matlab浪漫画图,Matlab技巧11:谁说数学人不懂浪漫——Matlab画隐函数曲面
  5. 断电MySQL起不来_急求mysql 断电后无法启动解决方法!!!!
  6. docker搭建python开发环境_PyCharm使用之利用Docker镜像搭建Python开发环境
  7. a卡 n卡 html5性能,实测说明,A卡N卡测试平台
  8. linux的mysql不允许连接_linux下允许mysql远程连接
  9. string.format的使用与及转义
  10. mqtt协议-broker之moqutte源码研究二之Connect报文处理