珂朵莉的数列

思路:

树状数组+高精度

离散化不知道哪里写错了,一直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);}
}

转载于:https://www.cnblogs.com/widsom/p/7955793.html

牛客练习赛7 E 珂朵莉的数列相关推荐

  1. 牛客练习赛9 B - 珂朵莉的值域连续段

    题目描述 珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续 一些数在值域上连续的意思即其在值域上构成一个连续的区间 输入描述: 第一行有一个整数n,表示树的节点数.接下来n–1行,每 ...

  2. 牛客练习赛56 小魂和他的数列

    小魂和他的数列 题目链接 题目大意 给出一个数列,让求长度为k的严格递增子序列有多少个 怎么做呢? 显然dp 这个是很好想的 for (int i= 1; i <= n; i ++ ){dp[i ...

  3. 搜索+思维 珂朵莉的值域连续段

    珂朵莉的值域连续段 链接:https://www.nowcoder.com/acm/contest/40/B 来源:牛客网 题目描述 珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续 ...

  4. 一种黑科技:珂朵莉树

    首先要明白的是:珂朵莉树(ODT)是一种用来骗分的暴力数据结构. 珂朵莉树的思想是利用集合set,把相同且连续的元素合并为一个个区间,从而进行区间修改:因此,珂朵莉树是区间的集合,这点可以通过定义结构 ...

  5. 珂朵莉的约数(牛客练习赛9)

    链接:https://www.nowcoder.com/acm/contest/40/F 来源:牛客网 珂朵莉给你一个长为n的序列,有m次查询 每次查询给两个数l,r 设s为区间[l,r]内所有数的乘 ...

  6. 牛客每日练习----珂朵莉与宇宙,Forever97与寄信,Number

    大提琴的声音就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤 链接:https://ac.nowcoder.com/acm/problem/14600 ...

  7. 牛客练习赛9。 B 柯朵莉的值域连续端

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 题目描述 珂朵莉给你一个有根树,求有多少个子树满足其 ...

  8. 牛客练习赛6 珂学送分2

    链接:https://ac.nowcoder.com/acm/contest/26/E 来源:牛客网 题目描述 珂...珂...珂朵莉给你出了一道送分题: 给你一个长为n的序列{vi},和一个数a,你 ...

  9. 数据结构 【树状数组】【线段树】【珂朵莉树】

    一.区间合并 1.AcWing245你能回答这些问题吗 分析: 线段树.维护四个变量,即可实现区间合并. mx 区间最大连续子段和 mx_l 以区间左端点为左界的最大连续字段和 mx_r 以区间左端点 ...

最新文章

  1. ACL 2019年度回顾:自然语言处理发展趋势
  2. python模块的函数_Python模块及函数的使用
  3. Ruby之旅—Ruby的Hello World
  4. vue+django前后端项目部署
  5. ​深度学习基础 | Seq2seq+Attention
  6. JQuery EasyUI 之 messager基本使用
  7. Wap Push Access Protocol(PAP)介绍-开放源码
  8. exfat linux 驱动_「正点原子Linux连载」第二章Ubuntu系统入门(2)
  9. 什么是tftp服务器? 如何搭建tftp服务器?
  10. 【MongoDB】索引属性 之 唯一索引
  11. 第六章 用正三和弦为含跳进旋律配和声
  12. JAVA超简单输名字骂人_骂人不带脏字的网名非常有趣
  13. 更改WSL Docker 镜像目录 减少C盘占用
  14. Oracle SPARC T5-2 服务器:硬件规格
  15. 计算机显示器模糊,电脑显示器模糊是怎么回事?
  16. 2014年计算机求职总结--准备篇 (顺便也带点自己在美国准备的总结吧)
  17. mysql的cpu使用率突然增高_mysql cpu使用率过高解决方法
  18. FBX BlendShape/Morph动画解析
  19. imx6ul 16 之DDR
  20. shell 脚本如何判断文件是否存在

热门文章

  1. 参考基因组中的特殊序列
  2. 机器学习:范数及代码实现
  3. Cadvisor源码分析监控项
  4. 在ASP.NET MVC应用中开发插件框架(中英对照)
  5. js类数组转数组的方法(ArrayLike)
  6. How to Enable Trace or Debug for APIs executed as SQL Script Outside of the Applications ?
  7. 北京集训:20180323
  8. 在centos下启动nginx出现Failed to start nginx.service:unit not found
  9. (九)洞悉linux下的Netfilteramp;iptables:网络地址转换原理之DNAT
  10. 基于软件开发对嵌入式开发的思考