21 条题解

  • 1
    @ 2025-5-11 9:37:50

    权威

    #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;
    }
    
    
    
    
    • 1
      @ 2024-7-26 10:58:29

      A+B Problem题解

      新用户强烈建议阅读此帖

      首先我们要理清思路

      1.需要用到什么样的头文件?

      2.用什么样的数据范围?

      3.思路是什么?

      首先题目中的数据范围是1a,b≤10^6, 而int 的范围是-2147483648-2147483647 正合题意,所以数据类型可以用int

      话不多说,直接上代码

      #include<iostream>//导入头文件,iostream里面是标准输入输出流(我说的什么?) 
      using namespace std;//使用标准命名空间 
      int main(){//主函数,程序的入口 
      	int a,b;//创建a,b两个整型变量 
      	cin>>a>>b;//输入 a , b 两个变量 
      	cout<<a+b; //输出a+b的内容 
      	return 0; 
      }
      

      本蒟蒻发的第一篇题解,请多多支持喵~~

      • 0
        @ 2025-8-18 11:23:58

        谁不会这道题??

        #include<bits/stdc++.h>
        using namespace std;
        int main(){
            int a,b;
            cin>>a>>b;
            cout<<a+b;
            return 0;
        }
        
        

        其实是我不会

        禁止发疯!!!

        • 0
          @ 2025-5-24 15:28:36
          #include<bits/stdc++.h>//万能头文件
          using namespace std;
          
          int main(){
          //定义int类型变量a,b
          int a;
          int b;
          //输入变量a,b
          scanf("%d",&a);
          scanf("%d",&b);
          //输出a,b
          printf(" %d\n", a + b);
          //exit(0); 或 return 0; 结束程序
          return 0;
          }
          
          
          • -1
            @ 2025-7-23 22:55:34
            #include<bits/stdc++.h>
            /*使用iostream库
            导入cin和cout函数*/
            using namespace std;
            /*获取命名空间*/
            int main(){//主函数
                int a,b;//定义整数变量
                cin>>a>>b;//输入数据
                cout<<a+b<<endl;//计算并输出数据
            
                return 0;//结束主函数
            }
            
            • -1
              @ 2025-7-7 11:38:39
              #include<bits/stdc++.h>
              using namespace std;
              int main(){
              	long long a,b;
              	cin>>a>>b;
              	cout<<a+b;
              }
              
              
              • -1
                @ 2025-7-6 23:16:54

                #include

                using namespace std;

                int main()

                {

                int a;
                
                int b;
                
                cin>>a>>b;
                
                cout<<a+b;
                
                return 0;
                

                }

                • -1
                  @ 2025-4-21 20:16:38
                  ```cpp
                  #include <bits/stdc++.h>
                  using namespace std;
                  #define LL long long
                  const int N = 1e5 + 10;
                  const int INF = 0x3f3f3f3f;
                  string a1 , b1;
                  int a[500] , b[500] , c[500];
                  int main()
                  {
                      cin >> a1 >> b1;
                      int lena = a1.size();
                      int lenb = b1.size();
                      for ( int i = 0 ; i < lena ; i++ )
                  	{
                          a[ lena - i ] = a1[i] - '0';
                      }
                      for ( int i = 0 ; i < lenb ; i++ )
                  	{
                          b[ lenb - i ] = b1[i] - '0';
                      }
                      int lenc = 1 , x = 0;
                      while  ( lenc <= lena || lenc <= lenb )
                  	{
                          c[lenc] = a[lenc] + b[lenc] + x;
                          x = c[lenc] / 10;
                          c[lenc] = c[lenc] % 10;
                          lenc++;
                      }
                      if ( x > 0 )
                  	{
                         c[lenc] = x;
                      }
                      else
                  	{
                         lenc--;
                      }
                      for ( int i = lenc ; i >= 1 ; i-- )
                  	{
                          cout << c[i];
                  	}
                      cout << endl;
                  	return 0;
                  }
                  //菜鸟驿站
                  //老六专属
                  
                  
                  • -1
                    @ 2025-1-23 11:13:08
                    #include<iostream>
                    using namespace std;
                    int main()
                    {
                    	int a,b;
                    	cin>>a>>b;
                    	cout<<a+b;
                    }
                    
                    • -2
                      @ 2025-2-21 19:53:22

                      最短题解

                      #include<iostream>
                      int a,b;int main(){std::cin>>a>>b;std::cout<<a+b;}
                      
                      • -2
                        @ 2024-11-16 16:21:16
                        #include<iostream>
                        using namespace std;
                        int main(){
                        	int a,b,c;
                        	cin>>a>>b;
                        	c=a+b;
                        	cout<<c;
                        }
                        
                        • -3
                          @ 2025-6-1 18:22:05

                          #A+B problem {

                          { #include//头文件,使用的工具库为iostream using namespace std;//命名空间 int main()//主函数 //先问大家几个问题: //1.我们如何获取a与b//2.我们如何进行对a于b的运算? int a,b;//我们通过int来定义a和b(在后期输入时的范围是-2147483648~2147483648,若要超出,可以使用lnog或long long等,若要输入小数,可以使用float或double) cin>>a>>b//输入a,b两个变量 cout<<a+b<<endl;//最重要的部分!!!这里我们要对a和b进行运算,这时我们要使用运算符,运算符有很多,如:“*”乘法 “/”除法 “+”加法 “-”减法 “^”次方 “%”取余…… return 0;//可有可无 //总结:1.a与b通过int定义,且不同的类型变量有不同规定取值范围; //2.我们使用运算符进行两个变量的运算

                          } } //全网@

                          • -3
                            @ 2025-4-21 20:16:38
                            ```cpp
                            #include <bits/stdc++.h>
                            using namespace std;
                            #define LL long long
                            const int N = 1e5 + 10;
                            const int INF = 0x3f3f3f3f;
                            string a1 , b1;
                            int a[500] , b[500] , c[500];
                            int main()
                            {
                                cin >> a1 >> b1;
                                int lena = a1.size();
                                int lenb = b1.size();
                                for ( int i = 0 ; i < lena ; i++ )
                            	{
                                    a[ lena - i ] = a1[i] - '0';
                                }
                                for ( int i = 0 ; i < lenb ; i++ )
                            	{
                                    b[ lenb - i ] = b1[i] - '0';
                                }
                                int lenc = 1 , x = 0;
                                while  ( lenc <= lena || lenc <= lenb )
                            	{
                                    c[lenc] = a[lenc] + b[lenc] + x;
                                    x = c[lenc] / 10;
                                    c[lenc] = c[lenc] % 10;
                                    lenc++;
                                }
                                if ( x > 0 )
                            	{
                                   c[lenc] = x;
                                }
                                else
                            	{
                                   lenc--;
                                }
                                for ( int i = lenc ; i >= 1 ; i-- )
                            	{
                                    cout << c[i];
                            	}
                                cout << endl;
                            	return 0;
                            }
                            //菜鸟驿站
                            //老六专属
                            
                            
                            • -4
                              @ 2025-1-25 11:30:47
                              #include<bits/stdc++.h>
                              using namespace std;
                              int main(){
                              int a, b;
                              cin >> a >> b;
                              cout << a + b << endl;
                              return 0;
                              }
                              
                              • -4
                                @ 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;
                                }
                                
                                
                                • -5
                                  @ 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;
                                  }
                                  

                                  怎么说🙃

                                • -5
                                  @ 2024-11-10 15:03:57
                                  #include<iostream> 
                                  using namespace std;
                                  int main(){
                                  	int a,b;
                                  	cin>>a>>b;
                                  	cout<<a+b;
                                  }
                                  
                                  • -5
                                    @ 2024-9-14 22:25:13
                                    高精度加法

                                    新人不会康林一个人 @杨时欢 俩提交都AC阿米诺斯 亲放心食用

                                    #include<bits/stdc++.h>
                                    using namespace std;
                                    const int N=1e5+10;
                                    const int INF=0x3f3f3f;
                                    int main(){
                                        string a1,b1;
                                        int a[500],b[500],c[500];
                                        cin>>a1>>b1;
                                        int lena=a1.size();
                                        int lenb=b1.size();
                                        for(int i=0;i<lena;i++){
                                            a[lena-i]=a1[i]-'0';
                                        }
                                        for(int i=0;i<lenb;i++){
                                            b[lenb-i]=b1[i]-'0';
                                        }
                                        int lenc=1,x=0;
                                        while(lenc<=lena || lenc<=lenb){
                                            c[lenc]=a[lenc]+b[lenc]+x;
                                            x=c[lenc]/10;
                                            c[lenc]=c[lenc]%10;
                                            lenc++;
                                        }
                                        if(x>0){
                                           c[lenc]=x;
                                        }
                                        else{
                                           lenc--;
                                        }
                                        for(int i=lenc;i>=1;i--)
                                            cout<<c[i];
                                        cout<<endl;
                                    
                                    	return 0;
                                    }
                                    
                                    提示:此代码可提交题@@高精度加法***
                                    
                                    • -6
                                      @ 2024-11-10 20:23:47
                                      #include<iostream>
                                      using namespace std;
                                      int main ()
                                      {
                                      	int a,b;
                                      	cin >> a >> b;
                                      	cout << a + b; 
                                      }
                                      

                                      最简单的代码了,自己拿去用

                                      • -6
                                        @ 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;
                                        }
                                        

                                      信息

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