博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1966 火柴排队
阅读量:5138 次
发布时间:2019-06-13

本文共 1101 字,大约阅读时间需要 3 分钟。

题意:两排火柴,定义$cost=\sum_{i=1}^{n}(b_i-a_i)^2$其中$b_i,a_i$为火柴的高度,

   每相邻两个火柴可以交换,问最少经过几次交换,可以使cost最小(高度无重复)

   输出最小交换次数。

 

思路:很明显,把两个序列排序,这样的对应求得的cost一定是最小的(也就是离散化后对应数都相等)

          那么,问题转化为了:给你一个初始序列和一个目标序列,每次交换相邻两个元素,问最小交换次数。。。

   离散化后,相当于给你一个乱序,把它变成升序。。。逆序对啊。。。

 

#include
#include
#include
#include
#include
using namespace std;#define int long long#define olinr return#define _ 0#define love_nmr 0#define DB doubleint c[105050];struct node{ int id; int data; friend bool operator < (const node &x,const node &y) { return x.data
9) put(x/10); putchar(x%10+'0');}int ans;node a[105050];node b[105050];signed main(){ n=read(); for(int i=1;i<=n;i++) { a[i].data=read(); a[i].id=i; } for(int i=1;i<=n;i++) { b[i].data=read(); b[i].id=i; } sort(a+1,a+n+1); sort(b+1,b+n+1); for(int i=1;i<=n;i++) s[a[i].id]=b[i].id; for(int i=1;i<=n;i++) { add(s[i]); ans+=i-query(s[i]); ans%=99999997; } put(ans%99999997); olinr ~~(0^_^0)+love_nmr;}

 

转载于:https://www.cnblogs.com/olinr/p/9548572.html

你可能感兴趣的文章
Vue安装准备工作
查看>>
.NET 母版页 讲解
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
jvm slot复用
查看>>
LibSVM for Python 使用
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
Windows 7 上安装Visual Studio 2015 失败解决方案
查看>>
iOS按钮长按
查看>>
Shell流程控制
查看>>
CSS属性值currentColor
查看>>
[Leetcode|SQL] Combine Two Tables
查看>>
《DSP using MATLAB》Problem 7.37
查看>>
ROS lesson 1
查看>>
js笔记
查看>>
c风格字符串函数
查看>>
python基础学习第二天
查看>>
java可重入锁reentrantlock
查看>>
浅谈卷积神经网络及matlab实现
查看>>