当前位置: 首页 > news >正文

江门网站建设兼职奉节做网站

江门网站建设兼职,奉节做网站,广东设计公司排名前十强,单页面网站源码题目描述: 小 A 现在有一个长度为 𝑛 的序列 {𝑥𝑖},但是小 A 认为这个序列不够优美。 小 A 认为一个序列是优美的,当且仅当存在 𝑘 ∈ [1, 𝑛],满足: &#…

题目描述:

        小 A 现在有一个长度为 𝑛 的序列 {𝑥𝑖},但是小 A 认为这个序列不够优美。 小 A 认为一个序列是优美的,当且仅当存在 𝑘 ∈ [1, 𝑛],满足: 𝑥1 ≤ 𝑥2 ≤ … ≤ 𝑥𝑘 ≥ 𝑥𝑘+1 ≥ … ≥ 𝑥𝑛 。现在小 A 可以进行若干次操作,每次可以交换序列中相邻的两个项,现在他想知道最少操作多少次之后能够使序列变为优美的。

Input Format

第一行一个正整数 𝑛,表示序列的长度。 接下来一行 𝑛 个整数,表示初始的序列。

Output Format

输出一行一个整数,表示最少需要的操作次数。

Sample Input

5 3 4 1 2

Sample Output

1

Constraints

对于 30% 的数据,𝑛 ≤ 12。

对于 60% 的数据,𝑛 ≤ 100000, 𝑎𝑖 互不相同。

对于 100% 的数据,𝑛, 𝑎𝑖 ≤ 100000。

思路:

        仔细分析题意,因只能交换序列中相邻的两个项,且要求中间数大,两端较小。可以用贪心思想将每一个小的x[i]往左或往右两端移动,取最小的交换次数,最后累加即为所求。其实就是计算每个数左边或右边比它大的数(逆序对)有多少个,取最优。

        用树状数组刚好能满足快速计算逆序对的需求。注意:因数据有可能重复,我们需要将数组从大到小排序,且将数值相同的元素id大的往前放。

#include<bits/stdc++.h>
using namespace std;
int t[100005], n;
struct node {int x, id;
} a[100005], b[100005];
bool sort1(node a, node b) { //从大到小排序,值相同ID大的放前面if (a.x == b.x) return a.id > b.id;return a.x > b.x;
}
void add(int pos, int x) {while (pos <= n) {t[pos] += x;pos += -pos & pos;}
}
int sum(int pos) {int ans = 0;while (pos) {ans += t[pos];pos -= -pos & pos;}return ans;
}
int main() {int ans = 0;cin >> n;int resa[n + 1], resb[n + 1];for (int i = 1; i <= n; i++) {scanf("%d", &a[i].x);b[i].x = a[i].x;	//复制一个数组用于计算右边逆序对a[i].id = i;	//求i左边逆序对b[i].id = n - i + 1; //求i右边逆序对,id取反}sort(a + 1, a + 1 + n, sort1);sort(b + 1, b + 1 + n, sort1);for (int i = 1; i <= n; i++) {add(a[i].id, 1);resa[a[i].id] = sum(a[i].id - 1); //把每个i的逆序对保存到数组对应位置}memset(t, 0, sizeof(t)); //清空数组,以便计算右边逆序对for (int i = 1; i <= n; i++) {add(b[i].id, 1);resb[b[i].id] = sum(b[i].id - 1); }reverse(resb + 1, resb + 1 + n); //之前id是反向定义,需要反转数组元素for (int i = 1; i <= n; i++)ans += min(resa[i], resb[i]); //取每个i对于左右逆序对的最小值的和,即为所求cout << ans;return 0;
}

http://www.yayakq.cn/news/68709/

相关文章:

  • 长沙专业网站优化定制软件设计图片
  • 网站横幅怎么更换郑州七彩网站建设公司
  • 合肥正规制作网站公司seo广告
  • 网站制作眼北京小程序开发电话
  • 商业网站和企业网站的区别做网站和做软件哪个赚钱
  • 玉林市网站开发公司电话wordpress 管理员登录
  • 交互式英语网站的构建seo顾问
  • ps做的网站图片好大微网站建设 合同
  • 江西做网站的公司网站关键词在哪
  • 网站推广应该注意什么网站开发工程师简介
  • 凡科官网app下载网络优化的内容包括哪些
  • 网站内容与功能设计与实现的广西建设网官网在线服务
  • 青岛做门户网站的有哪些国土局网站建设情况
  • 正版厦门网站设计公司河南省财政企业信息管理系统
  • 门户网站建设模板沧州网站建设设计定制
  • ai软件杭州优化建筑设计
  • 宁波淘宝网站建设网络维护员是做什么的
  • 网站开发付款分几步网站建设合同服务响应时间
  • 海外网站制作系统门户
  • 在哪里找做网站的合肥网页设计就业
  • 虚拟网站建设指导网站内容的特点
  • 网站建设实训报告作业中天建设集团有限公司简介
  • 零代码建站平台网络营销策划方案结论
  • 笔记模板wordpress百度 seo优化作用
  • 顺企网我做网站在百度怎么发布作品
  • 企业网站建设计划图书馆网站开发总结
  • wordpress更新主题报错sem和seo有什么区别
  • 订阅号栏目里做微网站哈尔滨模版建站公司推荐
  • 微信公众号的微网站怎么做以营销网建为
  • wampserver做的网站北京网站开发哪家好