未完成代码存档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未完成代码存档相关的知识,希望对你有一定的参考价值。

#include <cstdio>
#define Max 100000

typedef long long LL;
struct node
{
    LL l,r,dis,flag,Min_value,Max_value,set,time_set,time_add;
}tr[Max<<2];
int max(LL a,LL b){return a>b?a:b;}
int min(LL a,LL b){return a>b?b:a;} 
LL n,m,Time;
void up(LL k)
{
    tr[k].dis=tr[k<<1].dis+tr[k<<1|1].dis;
    tr[k].Max_value=max(tr[k<<1].Max_value,tr[k<<1|1].Max_value);
    tr[k].Min_value=min(tr[k<<1].Min_value,tr[k<<1|1].Min_value);
}
void build(LL k,LL l,LL r)
{
    tr[k].l=l;tr[k].r=r;
    if(l==r)
    {
        scanf("%lld",&tr[k].dis);
        tr[k].Max_value=tr[k].dis;
        tr[k].Min_value=tr[k].dis;
        return;
    }
    LL mid=(tr[k].l+tr[k].r)>>1;
    build(k<<1,l,mid);
    build(k<<1|1,mid+1,r);
    up(k);
}
void section_add(int k,int l,int r,int v)
{
    if(tr[k].l==l&&tr[k].r==r)
    {
        tr[k].dis+=(r-l+1)*v;
        tr[k].flag+=v;
        tr[k].time_add=++Time;
        return;
    }
    int mid=(tr[k].l+tr[k].r )>>1;
    if(l>mid) section_add(k<<1|1,l,r,v);
    else if(r<=mid) section_add(k<<1,l,r,v);
    else section_add(k<<1,l,mid,v),section_add(k<<1|1,mid+1,r,v);
    up(k);
}
void section_set(int k,int l,int r,int v)
{
    if(tr[k].l==l&&tr[k].r==r)
    {
        tr[k].dis=(r-l)*v;
        tr[k].set=v;
        tr[k].time_set=++Time;
        return;
    }
    int mid=(tr[k].l+tr[k].r)>>1;
    if(l>mid) section_set(k<<1|1,l,r,v);
    else if(r<=mid) section_set(k<<1,l,r,v);
    else section_set(k<<1,l,mid,v),section_set(k<<1|1,mid+1,r,v);
    up(k);
}
void pushdown(LL k)
{
    if(tr[k].l==tr[k].r) return;
    if(tr[k].time_add<tr[k].time_set)
    {
        tr[k<<1].set=tr[k].set;
        tr[k<<1|1].set=tr[k].set;
        tr[k<<1].dis=tr[k].set*(tr[k<<1].r-tr[k<<1].l+1);
        tr[k<<1|1].dis=tr[k].set*(tr[k<<1|1].r-tr[k<<1|1].l+1);
        tr[k<<1].time_set=tr[k].time_set;
        tr[k<<1|1].time_set=tr[k].time_set;
        tr[k<<1].time_add=tr[k].time_add;
        tr[k<<1|1].time_add=tr[k].time_add;
        tr[k].set=0;
        tr[k].flag=0;
        tr[k].time_add=0;
        tr[k].time_set=0;
    }
    if(tr[k].time_set<tr[k].time_add)
    {
        tr[k<<1].set=tr[k].set;
        tr[k<<1|1].set=tr[k].set;
        tr[k<<1].dis=tr[k].set*(tr[k<<1].r-tr[k<<1].l+1);
        tr[k<<1|1].dis=tr[k].set*(tr[k<<1|1].r-tr[k<<1|1].l+1);
        tr[k<<1].time_set=tr[k].time_set;
        tr[k<<1|1].time_set=tr[k].time_set;
        tr[k<<1].time_add=tr[k].time_add;
        tr[k<<1|1].time_add=tr[k].time_add;
        tr[k<<1].dis+=tr[k].flag*(tr[k<<1].r-tr[k<<1].l+1);
        tr[k<<1|1].dis+=tr[k].flag*(tr[k<<1|1].r-tr[k<<1|1].l+1);
        tr[k].set=0;
        tr[k].flag=0;
        tr[k].time_add=0;
        tr[k].time_set=0;
    }
}
LL query(LL k,LL l,LL r)
{
    if(tr[k].l==l&&tr[k].r==r) return tr[k].dis;
    if(tr[k].flag||tr[k].set) pushdown(k);
    LL mid=(tr[k].l+tr[k].r)>>1;
    if(l>mid) return query(k<<1|1,l,r);
    else if(r<=mid) return query(k<<1,l,r);
    else return query(k<<1,l,mid)+query(k<<1|1,mid+1,r);
    up(k);
}
LL query_max(LL k,LL l,LL r)
{
    if(tr[k].l==l&&tr[k].r==r) return tr[k].Max_value;
    if(tr[k].flag||tr[k].set) pushdown(k);
    LL mid=(tr[k].l+tr[k].r)>>1;
    if(l>mid) return query_max(k<<1|1,l,r);
    else if(r<=mid) return  query_max(k<<1,l,r);
    else return max(query_max(k<<1,l,mid),query_max(k<<1|1,mid+1,r));
    up(k);
}
LL query_min(LL k,LL l,LL r)
{
    if(tr[k].l==l&&tr[k].r==r) return tr[k].Min_value;
    if(tr[k].flag||tr[k].set) pushdown(k);
    LL mid=(tr[k].l+tr[k].r)>>1;
    if(l>mid) return query_min(k<<1|1,l,r);
    else if(r<=mid) return  query_min(k<<1,l,r);
    else return min(query_min(k<<1,l,mid),query_min(k<<1|1,mid+1,r));
    up(k);
}
int main()
{
    scanf("%lld%lld",&n,&m);
    build(1,1,n);
    char str[4];
    for(int x,y,z;m--;)
    {
        scanf("%s",str+1);
        if(str[1]==a)
        {
            scanf("%lld%lld%lld",&x,&y,&z);
            section_add(1,x,y,z);
        }
        else if(str[1]==s)
        {
            if(str[2]==e)
            {
                scanf("%lld%lld%lld",&x,&y,&z);
                section_set(1,x,y,z);
            }
            else if(str[2]==u)
            {
                scanf("%lld%lld",&x,&y);
                printf("%lld\n",query(1,x,y));
            }
        }
        else if(str[1]==m)
        {
            scanf("%lld%lld",&x,&y);
            if(str[2]==a)
                printf("%lld\n",query_max(1,x,y));
            else if(str[2]==i)
                printf("%lld\n",query_min(1,x,y));
        }
    }
    return 0; 
}
/*
10 6
3 9 2 8 1 7 5 0 4 6
add 4 9 4
set 2 6 2
add 3 8 2
sum 2 10
max 1 7
min 3 6
*/

 

以上是关于未完成代码存档的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Android:存档-“未安装应用程序。包似乎已损坏”

XCode 存档:“未找到代码签名身份:未找到有效的签名身份(即证书和私钥对)。”

未完成存档

未完成存档

未完成存档

1526 分配笔名(未完成存档)