zoukankan      html  css  js  c++  java
  • 牛客练习赛7 E 珂朵莉的数列(树状数组+爆long long解决方法)

     https://www.nowcoder.com/acm/contest/38/E

    题意:

    思路:

     树状数组维护。从大佬那里学习了如何处理爆long long的方法。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 typedef long long ll;
     7 const int maxn = 1000000+100;
     8 
     9 int n;
    10 int a[maxn],b[maxn];
    11 ll c[maxn];
    12 
    13 int lowbit(int x)
    14 {
    15     return x&(-x);
    16 }
    17 
    18 void add(int x ,int d)
    19 {
    20     while(x<maxn)
    21     {
    22         c[x] += d;
    23         x += lowbit(x);
    24     }
    25 }
    26 
    27 ll sum(int x)
    28 {
    29     ll ret = 0;
    30     while(x>0)
    31     {
    32         ret += c[x];
    33         x -= lowbit(x);
    34     }
    35     return ret;
    36 }
    37 
    38 int main()
    39 {
    40     //freopen("in.txt","r",stdin);
    41     scanf("%d",&n);
    42     for(int i=1;i<=n;i++)
    43     {
    44         scanf("%d",&a[i]);
    45         b[i] = a[i];
    46     }
    47     sort(b+1,b+n+1);
    48     int num = unique(b+1,b+n+1)-(b+1);
    49     ll ans1 = 0, ans2 = 0;
    50     ll mx = 1e18;
    51     for(int i=1;i<=n;i++)
    52     {
    53         a[i] = lower_bound(b+1,b+n+1,a[i])-(b+1);
    54         a[i]++;
    55         ans1 += (ll)(n-i+1)*(sum(n)-sum(a[i]));
    56         if(ans1>=mx)  ans2 += ans1/mx, ans1%=mx;
    57         add(a[i],i);
    58     }
    59     if(ans2)  printf("%lld%018lld
    ",ans2,ans1);
    60     else printf("%lld
    ",ans1);
    61     return 0;
    62 }
  • 相关阅读:
    一分钟学会 ConstraintLayout 之从属性角度理解布局
    halcon采集一幅图像
    halcon连续采集图像
    LinearLayout布局
    Html input 标签
    Html 标签种类
    Html div 标签
    Html span 标签
    Html h1-h6 标签
    Html br 标签
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/7953436.html
Copyright © 2011-2022 走看看