• 洛谷P1774 最接近神的人


    题目描述

    破解了符文之语,小FF开启了通往地下的道路。当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案。而石门上方用古代文写着“神的殿堂”。小FF猜想里面应该就有王室的遗产了。但现在的问题是如何打开这扇门……

    仔细研究后,他发现门上的图案大概是说:古代人认为只有智者才是最容易接近神明的。而最聪明的人往往通过一种仪式选拔出来。仪式大概是指,即将隐退的智者为他的候选人写下一串无序的数字,并让他们进行一种操作,即交换序列中相邻的两个元素。而用最少的交换次数使原序列变成不下降序列的人即是下一任智者。

    小FF发现门上同样有着n个数字。于是他认为打开这扇门的秘诀就是找到让这个序列变成不下降序列所需要的最小次数。但小FF不会……只好又找到了你,并答应事成之后与你三七分……

    输入输出格式

    输入格式:

    第一行为一个整数n,表示序列长度

    第二行为n个整数,表示序列中每个元素。

    输出格式:

    一个整数ans,即最少操作次数。

    输入输出样例

    输入样例#1:
    4
    2 8 0 3
    
    输出样例#1:
    3
       样例说明:开始序列为2 8 0 3,目标序列为0 2 3 8,可进行三次操作的目标序列:
        1.Swap (8,0):2  0  8  3
        2.Swap (2,0):0  2  8  3
        3.Swap (8,3):0  2  3  8
    

    说明

    对于30%的数据1≤n≤10^4。

    对于100%的数据1≤n≤5*10^5;

    -maxlongint≤A[i]≤maxlongint。

    以前只会写左闭右开区间的归并排序,今天终于写对闭区间排序辣!

     1 /*by SilverN*/
     2 #include<algorithm>
     3 #include<iostream>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 #include<vector>
     8 using namespace std;
     9 const int mxn=500010;
    10 int read(){
    11     int x=0,f=1;char ch=getchar();
    12     while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    13     while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
    14     return x*f;
    15 }
    16 int t[mxn],a[mxn];
    17 int n;
    18 long long ans=0;
    19 void merge(int l,int r){
    20     if(l>=r)return;
    21     int mid=(l+r)>>1;
    22     merge(l,mid);
    23     merge(mid+1,r);
    24     int p=l,q=mid+1,i=l;
    25     while(p<=mid || q<=r){
    26         if(q>r || (p<=mid && a[p]<=a[q])){
    27             t[i++]=a[p++];
    28         }
    29         else t[i++]=a[q++],ans+=mid-p+1;
    30     }
    31     for(i=l;i<=r;i++)a[i]=t[i];
    32     return;
    33 }
    34 int main(){
    35     n=read();
    36     int i,j;
    37     for(i=1;i<=n;i++)
    38         a[i]=read();
    39     merge(1,n);
    40     printf("%lld
    ",ans);
    41     return 0;
    42 }
  • 相关阅读:
    spring boot 扫描不到自定义Controller
    SpringBoot+Maven多模块项目(创建、依赖、打包可执行jar包部署测试)完整流程
    spring boot 中使用 jpa以及jpa介绍
    java8 快速实现List转map 、分组、过滤等操作
    Mysql 创建函数出现This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA
    Spring mvc @initBinder 类型转化器的使用
    @RequestMapping 和@ResponseBody 和 @RequestBody和@PathVariable 注解 注解用法
    ssm的自动类型转换器
    如果将get请求转换成post请求
    如何将post请求转换成put和delete请求
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/6102463.html
Copyright © 2020-2023  润新知