zoukankan      html  css  js  c++  java
  • 牛客练习赛7 E 珂朵莉的数列

    珂朵莉的数列

    思路:

    树状数组+高精度

    离散化不知道哪里写错了,一直wa,最后用二分写的离散化

    哪位路过大神可以帮我看看原来的那个离散化错在哪里啊

    通过代码:

    import java.math.BigInteger;
    import java.util.*;
    import java.util.Scanner;
      
    class node
    {
        int x;
        int id;
    }
    class cmp implements Comparator<node>
    {
        public int compare(node A,node B)
        {
            if(A.x<B.x)return -1;
            else if(A.x==B.x)return 0;
            else return 1;
        }
    }
    public class Main{
        public final static int N=(int)1e6+9;
        public static int n;
        public static int a[]=new int[N];
        public static long b[]=new long[N];
        public static long bit[]=new long[N];
        public static long sum(int x)
        {
            long ret=0;
            while(x>0)
            {
                ret+=bit[x];
                x-=x&(-x);
            }
            return ret;
        }
        public static void add(int x,long a)
        {
            while(x<=n)
            {
                bit[x]+=a;
                x+=x&(-x);
            }
        }
        public static void main(String[] args) {
                Scanner reader = new Scanner(System.in);
                n=reader.nextInt();
                for(int i=1;i<=n;i++)
                {
                    a[i]=reader.nextInt();
                    b[i]=a[i];
                }
                Arrays.sort(b,1,n+1);
                for(int i = 1; i <= n; i++) {
                    a[i] = Arrays.binarySearch(b, 1 ,n + 1,a[i]);
                }
                BigInteger ans=BigInteger.valueOf(0);
                for(int i=1;i<=n;i++)
                {
                    ans=ans.add(BigInteger.valueOf((sum(n)-sum(a[i]))*(n-i+1)));
                    add(a[i],i);
                }
                System.out.println(ans);
            }
    }

    错误代码:

    import java.math.BigInteger;
    import java.util.*;
    import java.util.Scanner;
      
    class node
    {
        int x;
        int id;
    }
    class cmp implements Comparator<node>
    {
        public int compare(node A,node B)
        {
            if(A.x<B.x)return -1;
            else if(A.x==B.x)return 0;
            else return 1;
        }
    }
    public class Main{
        public final static int N=(int)1e6+9;
        public static int n;
        public static node a[]=new node[N];
        public static int b[]=new int[N];
        public static long bit[]=new long[N];
        public static long sum(int x)
        {
            long ret=0;
            while(x>0)
            {
                ret+=bit[x];
                x-=x&(-x);
            }
            return ret;
        }
        public static void add(int x,long a)
        {
            while(x<=n)
            {
                bit[x]+=a;
                x+=x&(-x);
            }
        }
        public static void main(String[] args) {
                Scanner reader = new Scanner(System.in);
                n=reader.nextInt();
                for(int i=1;i<=n;i++)
                {
                    a[i]=new node();
                    a[i].x=reader.nextInt();
                    a[i].id=i;
                }
                //
                Arrays.sort(a,1,n+1,new cmp());
                  
                int cnt=1;
                a[0]=new node();
                a[0].x=-1;
                for(int i=1;i<=n;i++)
                {
                    if(a[i].x!=a[i-1].x)b[a[i].id]=++cnt;
                    else b[a[i].id]=cnt;
                }
                //for(int i=1;i<=n;i++)System.out.println(b[i]);
                BigInteger ans=BigInteger.valueOf(0);
                for(int i=1;i<=n;i++)
                {
                    ans=ans.add(BigInteger.valueOf((sum(cnt)-sum(b[i]))*(n-i+1)));
                    add(b[i],i);
                }
                System.out.println(ans);
            }
    }
  • 相关阅读:
    11-性能测试的工具:七大测试场景如何选择高质量的测试工具
    /10-性能测试的规划和步骤:为什么性能测试不容易一蹴而就呢
    09-性能测试的种类:如何快准狠地抓住一个测试的本质
    python 基础 4.5 用函数实现九九乘法表
    python 基础 4.4 生成式 生成器 迭代器
    python 基础 4.3 高阶函数下和匿名函数
    python 基础 4.2 高阶函数上
    1 zabbix3.2.4 安装
    python 基础 3.2 文件 for 练习
    python 基础 4.1 函数的参数
  • 原文地址:https://www.cnblogs.com/widsom/p/7955793.html
Copyright © 2011-2022 走看看