12.7

atcoder beginner 331C - Sum of Numbers Greater Than Me (atcoder.jp)这道题求后缀和,差不多是后缀和吧,然后佬用我没写过的一种树状数组直接秒掉,不服不行膜拜学习

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e6+10;
int n,sum;
int a[maxn],c[maxn];
int lbt(int x)
{
    return x&(-x);
}
void add(int x,int y)
{
    for(int i=x;i<=1e6;i+=lbt(i)) c[i]+=y;
}
int query(int x)
{
    int res=0;
    for(int i=x;i;i-=lbt(i)) res+=c[i];
    return res;
}
signed main()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i],add(a[i],a[i]),sum+=a[i];
    for(int i=1;i<=n;i++) cout<<sum-query(a[i])<<' ';
}

 不是,我上午写的下午回头一看,这不是一眼前缀和吗,前缀和稍稍变形,我靠,还是得多练,不然怎么输的都不知道。。。。。。。。。。。。。。以下是我拙劣的暴力法,数组记得开long long,而且这种问题要注意的一个就是数组的范围,因为我需要模拟结构体去关联每个元素和它所对应的sum,所以数组要开最大让其包含所有数值。但是出现了一个问题,我这个暴力法在一些测试点上面比佬的写法要快,神威蒟蒻的我目前还不能理解。。。。。。。。。。。。。。。。。。。。。

#include<iostream>
#include<algorithm>
using namespace std;

const int N=1000005;
long long a[N],b[N],c[N];
long long sum=0,ans=0;

int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
    cin>>a[i];
    sum+=a[i];
    b[i]=a[i];
}
sort(b,b+n);
for(int i=0;i>=0;i++)
{
    if(i==(n-1))break;
    else if(b[i]==b[i+1])ans+=b[i];
    else
    {
        ans+=b[i];
        c[b[i]]=sum-ans;
    }
}
for(int i=0;i<n;i++)
{
    cout<<c[a[i]]<<" ";
}
system("pause");
return 0;
}

 st表板子题

P3865 【模板】ST 表 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
using namespace std;

const int N=100005;
int a[N][30];

inline int read()
{
    int x=0,f=1;char ch=getchar();
    while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
    while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    return x*f;
}

int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)a[i][0]=read();
    for(int i=1;(1<<i)<=n;i++)
        for(int j=1;j+(1<<i)-1<=n;j++)
            a[j][i]=max(a[j][i-1],a[j+(1<<(i-1))][i-1]);
    for(int i=0,l,r;i<m;i++)
    {
        l=read(),r=read();
        int k=log2(r-l+1);
        printf("%d\n",max(a[l][k],a[r-(1<<k)+1][k]));
    }
    system("pause");
    return 0;
}

快读快写很重要。。。。。。。。。。。。。。。。。。。。。。。。。。。

posted @ 2023-12-07 12:06  工作日摆烂  阅读(54)  评论(0)    收藏  举报