44 条题解

  • -7
    @ 2024-11-26 21:04:54
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    struct node 
    {
        int data,rev,sum;
        node *son[2],*pre;
        bool judge();
        bool isroot();
        void pushdown();
        void update();
        void setson(node *child,int lr);
    }lct[233];
    int top,a,b;
    node *getnew(int x)
    {
        node *now=lct+ ++top;
        now->data=x;
        now->pre=now->son[1]=now->son[0]=lct;
        now->sum=0;
        now->rev=0;
        return now;
    }
    bool node::judge(){return pre->son[1]==this;}
    bool node::isroot()
    {
        if(pre==lct)return true;
        return !(pre->son[1]==this||pre->son[0]==this);
    }
    void node::pushdown()
    {
        if(this==lct||!rev)return;
        swap(son[0],son[1]);
        son[0]->rev^=1;
        son[1]->rev^=1;
        rev=0;
    }
    void node::update(){sum=son[1]->sum+son[0]->sum+data;}
    void node::setson(node *child,int lr)
    {
        this->pushdown();
        child->pre=this;
        son[lr]=child;
        this->update();
    }
    void rotate(node *now)
    {
        node *father=now->pre,*grandfa=father->pre;
        if(!father->isroot()) grandfa->pushdown();
        father->pushdown();now->pushdown();
        int lr=now->judge();
        father->setson(now->son[lr^1],lr);
        if(father->isroot()) now->pre=grandfa;
        else grandfa->setson(now,father->judge());
        now->setson(father,lr^1);
        father->update();now->update();
        if(grandfa!=lct) grandfa->update();
    }
    void splay(node *now)
    {
        if(now->isroot())return;
        for(;!now->isroot();rotate(now))
        if(!now->pre->isroot())
        now->judge()==now->pre->judge()?rotate(now->pre):rotate(now);
    }
    node *access(node *now)
    {
        node *last=lct;
        for(;now!=lct;last=now,now=now->pre)
        {
            splay(now);
            now->setson(last,1);
        }
        return last;
    }
    void changeroot(node *now)
    {
        access(now)->rev^=1;
        splay(now);
    }
    void connect(node *x,node *y)
    {
        changeroot(x);
        x->pre=y;
        access(x);
    }
    void cut(node *x,node *y)
    {
        changeroot(x);
        access(y);
        splay(x);
        x->pushdown();
        x->son[1]=y->pre=lct;
        x->update();
    }
    int query(node *x,node *y)
    {
        changeroot(x);
        node *now=access(y);
        return now->sum;
    }
    int main()
    {
        scanf("%d%d",&a,&b);
        node *A=getnew(a);
        node *B=getnew(b);
        //连边 Link
            connect(A,B);
        //断边 Cut
            cut(A,B);
        //再连边orz Link again
            connect(A,B);
        printf("%d\n",query(A,B)); 
        return 0;
    }
    
    
    • -7
      @ 2024-11-19 20:19:33
      #include<iostream>
      using namespace std;
      int main(){
      	int a,b;
      	cin>>a>>b;
      	if(a==1&&b==2){
      		cout<<3;
      	}
      	else if(a==1000000&&b==1000000){
      		cout<<2000000;
      	}
      	else{
      		cout<<788;
      	}
      	return 0;
      }
      

      怎么说🙃

    • -7
      @ 2024-9-17 15:34:36

      我发高精度怎么了

      #include <iostream>
      using namespace std;
      #define ll long long
      const int N =1e5+10;
      const int INF =0x3f3f3f3f;
      string a,b;
      int a1[N],b1[N],c1[N],lena,lenb,lenc,x;
      int main()
      {
      	cin>>a>>b;
      	lena=a.size();
      	lenb=b.size();
      	for(int i=0;i<lena;i++)
      	{
      		a1[i]=a[lena-i-1]-'0';
      	}
      	for(int i=0;i<lenb;i++)
      	{
      		b1[i]=b[lenb-i-1]-'0';
      	}
      	lenc=max(lena,lenb);
      	for(int i=0;i<lenc;i++)
      	{
      		c1[i]=a1[i]+b1[i]+x;
      		x=c1[i]/10;
      		c1[i]%=10;
      	}
      	c1[lenc]=x;
      	while(c1[lenc]==0&&lenc>0)
      	{
      		lenc--;
      	}
      	for(int i=lenc;i>=0;i--)
      	{
      		cout<<c1[i];
      	}
       	return 0;
      }
      
    • -17
      @ 2024-11-23 18:33:25
      #include <iostream>
      using namespace std;
      int main()
      {
          int a,b;
          cin >> a >> b;
          cout << a+b;
          return 0;
      }
      

      有标志认证,属三无产品,请各位放心食用

      • @ 2025-2-21 19:51:47

        @哥们儿你这代码真能AC吗

      • @ 2025-12-15 17:27:40

        ber怎么这么多踩啊啊啊啊啊 疑似被网暴了TwT

    信息

    ID
    1
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    5137
    已通过
    1467
    上传者