51nod 基础题(2)

来源:互联网 发布:京东销售数据分析 编辑:程序博客网 时间:2024/06/06 08:40

1014,1019,1081

1019 树状数组 求 逆序数
1081 树状数组 求 区间和
①离散化。

struct num{    int ord;    int value;}sort(a+1,a+n+1,cmp);aa[a[i].ord]=i;

我的理解就是:不改变数组的顺序,但是把每个元素的值改为从1~n+1的数字。
树状数组

int lowbit(int x)   return x&(-x);void add(int x,int d)(修改){    while(x<=n)    {         c[x]+=d;         x+=lowbit(x);    }}int getsum(int x){    int sum=0;    while(x>0)    {        sum+=c[x];       x-=lowbit(x);    }    return sum;}

1014 快速幂

long long  quickpow(long long  a,long long  b,long long  c){    long long result;    if(b==0)  return 1;    else    {        while((b&1)==0)        {            b>>=1;            a=((a%c)*(a%c))%c;        }    }    result=a;    b>>=1;    while(b)    {        a=((a%c)*(a%c))%c;        if(b&1)        {            result=(result*(a%c))%c;        }        b>>=1;    }    return result;}

1049 我觉得这道题有一点dp的思想
sum1:当前和 sum2:当前最大和
if (a[i]+sum1>a[i])    sum1=a[i]+sum
else   sum1=a[i]
if(sum1>sum2)
sum2=sum1;

0 0
原创粉丝点击