JZOJ 3462. 【NOIP2013模拟联考5】休息(rest)
3462. 【NOIP2013模拟联考5】休息(rest) (Standard IO)
Description
Input
接下来一行n个数,第i个正整数Hi,为第i 本书的高度。
Output
Sample Input
- 6
- 5 3 2 1 6 4
Sample Output
- 3
- 【样例解释】
- 第一次划分之后,翻转(5,3,2,1),(6,4)。之后,书的高度为1 2 3 5 4 6,然后便是翻转(5,4)即可。
一个并不明显的性质是,在对原序列进行第一次划分过后,以后
的每次划分得到的各个部分都恰好由两个数组成。 这是因为在第一次划分和
第一轮的翻转之后,原数列由若干个单调增序列拼接而成,形式如下:a1, a2…
ai, b1, b2…bj…z1…zk.考虑相邻两个部分,不妨设为 a 部分和 b 部分,其中 ai
和 b1前后相邻。若 ai<b1则可以合并成同一部分,否则会形成块(ai, b1),并
且在下一轮翻转,成为…ai-1, b1, ai, b2…。可以发现在这以后,由于有 ai-1<ai,
则 ai-1与 ai不会在同一个块里;同理 b1和 b2不会在同一个块里。即,任意连
续三个数必定不会是单调递减的。 那么,这以后每次翻转都只会将相邻的逆
序对交换。由于这个算法最终可以正确地得到结果,所以第一轮以后进行的
翻转操作数就等于第一轮之后序列的逆序对数。而第一轮的翻转数我们可以
直接模拟得到。 求一个序列的逆序对数的经典做法是归并排序,同时记录。
时间复杂度 O(nlog2n)
代码如下:
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <string>
- #include <algorithm>
- #include <cmath>
- #define N 100007
- #define LL long long
- using namespace std;
- int n, a[N], b[N], tot;
- LL ans;
- void cl(int l, int r)
- {
- for (int i = l; i >= r; i--)
- a[++tot] = b[i];
- ans++;
- }
- inline void merge(int l, int mid, int r)
- {
- int i = l, j = mid + ;
- for (int k = l; k <= r; k++)
- if (j > r || i <= mid && a[i] < a[j]) b[k] = a[i++];
- else b[k] = a[j++], ans += mid - i + ;
- for (int k = l; k <= r; k++) a[k] = b[k];
- }
- inline void mergeSort(int a, int b)
- {
- int mid = (a + b) / ;
- if (a < b)
- {
- mergeSort(a, mid);
- mergeSort(mid + , b);
- merge(a, mid, b);
- }
- }
- int main()
- {
- scanf("%d", &n);
- for (int i = ; i <= n; i++)
- scanf("%d", &b[i]);
- int i = , j = ;
- while (i <= n)
- {
- while (b[i] > b[i + ] && i < n) i++;
- cl(i, j);
- j = i + ;
- i++;
- }
- memset(b, ,sizeof(b));
- mergeSort(, n);
- cout << ans;
- }
JZOJ 3462. 【NOIP2013模拟联考5】休息(rest)的更多相关文章
- JZOJ【NOIP2013模拟联考14】隐藏指令
JZOJ[NOIP2013模拟联考14]隐藏指令 题目 Description 在d维欧几里得空间中,指令是一个长度为2N的串.串的每一个元素为d个正交基的方向及反方向之一.例如,d = 1时(数轴) ...
- JZOJ 3493. 【NOIP2013模拟联考13】三角形
3493. [NOIP2013模拟联考13]三角形(triangle) (File IO): input:triangle.in output:triangle.out Time Limits: 10 ...
- JZOJ 3487. 【NOIP2013模拟联考11】剑与魔法(dragons)
3487. [NOIP2013模拟联考11]剑与魔法(dragons) (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB De ...
- JZOJ 3470. 【NOIP2013模拟联考8】最短路(path)
470. [NOIP2013模拟联考8]最短路(path) (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Detailed ...
- JZOJ 3463. 【NOIP2013模拟联考5】军训
3463. [NOIP2013模拟联考5]军训(training) (Standard IO) Time Limits: 2000 ms Memory Limits: 262144 KB Deta ...
- JZOJ 3461. 【NOIP2013模拟联考5】小麦亩产一千八(kela)
3461. [NOIP2013模拟联考5]小麦亩产一千八(kela) (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Det ...
- 【NOIP2013模拟联考7】OSU
[NOIP2013模拟联考7]OSU 描述 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分, ...
- [jzoj]3468.【NOIP2013模拟联考7】OSU!(osu)
Link https://jzoj.net/senior/#main/show/3468 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: ...
- [jzoj]3456.【NOIP2013模拟联考3】恭介的法则(rule)
Link https://jzoj.net/senior/#main/show/3456 Description 终于,在众亲们的奋斗下,最终boss 恭介被关进了库特设计的密室.正当她们松了一口气时 ...
随机推荐
- SpringBoot | 第十七章:web应用开发之文件上传
前言 上一章节,我们讲解了利用模版引擎实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容jsp项目的解决方案.既然开始讲解web开发了,我们就接着继续往web这个方向继续吧.通常,我们在做we ...
- Aspose.cell生成表格
public void ExportQueryPrj(HttpContext context) { //接受前端传递参数和数据 st ...
- Java开发笔记(九十八)利用Callable启动线程
前面介绍了如何利用Runnable接口构建线程任务,该方式确实方便了线程代码的复用与共享,然而Runnable不像公共方法那样有返回值,也就无法将线程代码的处理结果传给外部,造成外部既不知晓该线程是否 ...
- kickstart2019 round_C B. Circuit Board
思路: 这题应该不止一种解法,其中的一种可以看作是leetcode85https://www.cnblogs.com/wangyiming/p/11059176.html的加强版: 首先对于每一行,分 ...
- The eighth day
time n(名词):时间:次,时代,时刻: vt(及物动词):为...安排时间:测定...的时间:调准(机械的速度): vi(不及物动词):合拍,和谐,打拍子 files (原型是fly) vi(不 ...
- JAXB介绍一
参考博客: https://www.cnblogs.com/chenbenbuyi/p/8283657.html https://www.cnblogs.com/cnsdhzzl/p/8390514. ...
- Callable的简单使用
说起java的线程操作,都会想到Thread和Runable这两个, 这两个类可以实现异步和同步. 在大多数的java开发中, 这两个都是实现异步的线程来使用, 但是现在考虑一种情况: 发出一条线程, ...
- fastjson解析json数组
1.fastjson解析json数组(直接上代码) import java.util.ArrayList; import java.util.List; import com.alibaba.fast ...
- 博客系统-后台页面搭建:eazy
业务分析:布局为四个模块上边是系统描述,左边是导航菜单,中间是每个窗口的内容,下边是版权信息 点击左边的导航按钮,在右边窗口显示 代码: <%@ page language="java ...
- hihocoder 第四十周 三分求极值
题目链接:http://hihocoder.com/contest/hiho40/problem/1 ,一道简单的三分. 题目是在直角坐标系中有一条抛物线y=ax^2+bx+c和一个点P(x,y),求 ...