[NOIP2013]火柴排队

嘟嘟嘟

 

首先可以想到,最小距离一定是a中第 i 大的和b中第 i 大的在同一行。

然后先把a,b分别离散化,然后开一个标记数组,map[i]记录a中第 i 小的数在哪一个位置出现,然后对b数组处理一遍。

题中说交换次数,自然想到逆序对,于是我们对新的b数组求一遍逆序对就行了。

 1     #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<cstdlib>
 7 #include<cctype>
 8 #include<stack>
 9 #include<queue>
10 #include<vector>
11 using namespace std;
12 #define enter puts("")
13 #define space putchar(' ')
14 #define Mem(a, x) memset(a, x, sizeof(a))
15 #define rg register
16 typedef long long ll;
17 typedef double db;
18 const int INF = 0x3f3f3f3f;
19 const db eps = 1e-8;
20 const ll mod = 99999997;
21 const int maxn = 1e5 + 5;
22 inline ll read()
23 {
24   ll ans = 0;
25   char ch = getchar(), las = ' ';
26   while(!isdigit(ch)) las = ch, ch = getchar();
27   while(isdigit(ch)) ans = (ans << 3) + (ans << 1) + ch - '0', ch = getchar();
28   if(las == '-') ans = -ans;
29   return ans;
30 }
31 inline void write(ll x)
32 {
33   if(x < 0) putchar('-'), x = -x;
34   if(x >= 10) write(x / 10);
35   putchar(x % 10 + '0');
36 }
37 
38 int n;
39 int a[maxn], b[maxn];
40 ll ta[maxn], tb[maxn], f[maxn];
41 ll c[maxn], sum = 0;
42 
43 int lowbit(int x)
44 {
45   return x & -x;
46 }
47 void add(int pos)
48 {
49   while(pos <= n)
50     {
51       c[pos]++;
52       pos += lowbit(pos);
53     }
54 }
55 ll query(int pos)
56 {
57   ll ret = 0;
58   while(pos)
59     {
60       ret += c[pos];
61       ret %= mod;
62       pos -= lowbit(pos);
63     }
64   return ret;
65 }
66 
67 int main()
68 {
69   n = read();
70   for(int i = 1; i <= n; ++i) a[i] = read(), ta[i] = a[i];
71   for(int i = 1; i <= n; ++i) b[i] = read(), tb[i] = b[i];
72   sort(ta + 1, ta + n + 1);
73   sort(tb + 1, tb + n + 1);
74   for(int i = 1; i <= n; ++i) a[i] = lower_bound(ta + 1, ta + n + 1, a[i]) - ta;
75   for(int i = 1; i <= n; ++i) b[i] = lower_bound(tb + 1, tb + n + 1, b[i]) - tb;
76   for(int i = 1; i <= n; ++i) f[a[i]] = i;
77   for(int i = 1; i <= n; ++i) b[i] = f[b[i]];
78   for(int i = n; i; --i)
79     {
80       sum += query(b[i]); sum %= mod;
81       add(b[i]);
82     }
83   write(sum); enter;
84   return 0;
85 }
View Code

 

转载于:https://www.cnblogs.com/mrclr/p/9720650.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net core 上传文件大小限制 webconfig

<?xml version"1.0" encoding"utf-8"?><configuration> <location path"." inheritInChildApplications"false"> <system.webServer> <handlers> <add name"aspNetCore" path"*&qu…

python标准日期正则表达式_Python 正则表达式验证传统日期

Pure regular exprssion(?x)(?:(?#dd/mm)(3[0-1]|[12][0-9]|0?[0-9])/(1[0-2]|0?[1-9])|(?#mm/dd)(1[0-2]|0?[1-9])/(3[0-1]|[12][0-9]|0?[0-9]))/(?#yy or yyyy)(?:[0-9]{2})?[0-9]{2}Regex with procedural codedef dateCheck(sDate):import redaysinmonth (31, …

Orika:将JAXB对象映射到业务/域对象

这篇文章着眼于使用Orika将JAXB对象映射到业务域对象。 本月初&#xff0c; 我使用基于反射的Dozer讨论 了相同的映射用例 。 在本文中&#xff0c;我假设需要映射相同的示例类&#xff0c;但是它们将使用Orika而不是Dozer进行映射 。 Dozer和Orika旨在解决相同类型的问题&…

es6 语法 (函数扩展)

//函数参数默认值(more值后不能有参数) {function test(x,y world){console.log(默认值,x,y); }test(hello);// hello worldtest(hello,kill); //hello kill } //作用域概念 {let x test;function test2(x,y x){console.log(作用域,x,y);}test2(); // undefined undefined…

python递归必须要有_python如何递归生成树?

好像比較懂你的意思了, 試寫了一個 Tree, 不知道你覺得怎麼樣XDclass Tree:def __init__(self, name):self.name nameself.children {}def __iter__(self):return iter(self.children)def __str__(self):return self.namedef __repr__(self):return Tree("{}").for…

2018秋季C语言学习总结

转载于:https://www.cnblogs.com/noacgnnolife/p/10413255.html

java取非_java运算符 与()、非(~)、或(|)、异或(^)

1.位异或运算(^)运算规则是&#xff1a;两个数转为二进制&#xff0c;然后从高位开始比较&#xff0c;如果相同则为0&#xff0c;不相同则为1。比如&#xff1a;8^11.8转为二进制是1000&#xff0c;11转为二进制是1011.从高位开始比较得到的是&#xff1a;0011.然后二进制转为十…

JOOQ事实:从JPA批注到JOOQ表映射

JOOQ是一个简洁的框架&#xff0c;它解决了我在使用高级动态过滤查询时遇到的一个长期问题。 虽然Hibernate和JPA附带了一个有用的Criteria API&#xff08;我已经使用了很长一段时间&#xff09;&#xff0c;但是使用它们时所能做的却有一些可以理解的限制。 例如&#xff0c;…

解决Charles手机安装SSL证书后,获取到的接口为unknown,且乱码问题

按照正常流程将Charles安装并设置代理后&#xff0c;手机添加完代理并安装SSL证书&#xff0c;尝试抓取接口时&#xff0c;获取到的接口为unknown且返回内容乱码&#xff0c;如下图所示 解决办法&#xff1a; 在Proxy-SSL Proxying Settings-SSL Proxying下添加想要抓取的服务地…

Sum of Even Numbers After Queries

Solution: 转载于:https://www.cnblogs.com/Julietma/p/10414394.html

python的颜色有哪些_Python颜色分类及格式

Python字符串颜色使用下面方式进行修改\033[显示方式;字体色;背景色m 字符串 \033[0m显示方式包括&#xff1a;0 终端默认设置1 高亮显示4 使用下划线5 闪烁7 反白显示8 不可见字体颜色 | 背景颜色 | 颜色描述-------------------------------------------3…

我们甚至没有进行包容性的讨论

科技行业需要更加包容女性和有色人种。 这是关于拥有最大的人才库以吸取卓越的经验。 可悲的是&#xff0c;大多数讨论&#xff0c;甚至是倡导更具包容性的文化讨论&#xff0c;本身都是分裂的。 我们都是个人 我们都是个人。 我们都有自己的优点和缺点。 我们都有自己一生以…

第一次连接mysql失败_MySQL 远程连接失败

解决服务器能登陆 MySQL &#xff0c; 远程账户不能链接问题。(第一次遇见还是挺蒙的)一、 配置文件执行顺序/etc/my.cnf/etc/mysql/my.cnf/usr/etc/my.cnf~/.my.cnf二、用户密码注 &#xff1a; 服务器 tx 云 &#xff0c; OS ubuntu 18.4。1、linux ssh 端口 22 登陆账号密码…

Python学习week7-文件操作

1、文件IO常用操作 # 文件操作命令 2、打开操作open # open(file, moder, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone) 创建并打开一个文件test&#xff0c;然后关闭&#xff1b;打开一个文件&#xff0c;返回一个文件对象&#xff08;流对…

将一个实体转换成 Url 参数的形式 ?a=ab=b

function toQueryString(obj) { var ret []; for (var key in obj) { key encodeURIComponent(key); var values obj[key]; if (values && values.constructor Array) { //数组 var queryValues []; for (var i 0, len values.length, value; i < len; i ) …

Spring Boot –现代Java应用程序的基础

Spring Boot是Spring.io中一个相对较新的项目。 其目的是简化创建新的基于Spring Framework的项目&#xff0c;并通过应用一些约定来统一其配置。 这种关于配置的方法约定已经成功地应用于大多数所谓的现代Web框架中&#xff0c;例如Ruby on Rails&#xff0c;Django或Play&…

python qt快速入门_PyQt5快速入门(一)

PyQt5快速入门(一)前言为什么选择PyQt5作为GUI框架?API与Qt一致, 学会PyQt后再使用qt很简单开发迅速, 可视化操作,使用designer快速拖拽布局进行调试可以将文件打包成exe进行发布本节课内容(假设已经掌握python语法)搭建PyQt5环境测试PyQt5环境本节课使用环境python 3.6.6IDLE…

风险定量分析工具 龙卷风图 决策树形图 蒙特卡洛模拟

龙卷风图&#xff1a;是项目管理中用于在风险识别和定性分析之后&#xff0c;进行定量风险分析的技术----敏感性分析技术中最常用的一种图表技术。 敏感性分析&#xff1a;敏感性分析有助于确定哪些风险对项目具有最大的潜在影响。它把所有其他不确定因素保持在基准值的条件下…

java 先序遍历_二叉树的前序中序后序遍历(java代码)

importjava.util.*;public classtraversal {public static voidmain(String[] args) {List listnewArrayList<>();//构造二叉树TreeNode treeNode6newTreeNode(2,null,null);TreeNode treeNode5newTreeNode(1,null,null);TreeNode treeNode4newTreeNode(7,null,null);Tre…

js正则验证方法大全

/* 用途&#xff1a;检查输入手机号码是否正确 输入&#xff1a; s&#xff1a;字符串 返回&#xff1a; 如果通过验证返回true,否则返回false */ function checkMobile(s) { var regu /^[1][3][0-9]{9}$/; var re new RegExp(regu); if (re.test(s)) { return true; } els…