38 条题解

  • -3
    @ 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;
    }
    
    
    
    
    • -3
      @ 2025-1-23 11:13:08
      #include<iostream>
      using namespace std;
      int main()
      {
      	int a,b;
      	cin>>a>>b;
      	cout<<a+b;
      }
      
      • -4
        @ 2026-2-1 11:31:04

        http://ybt.ssoier.cn:8088/problem_show.php?pid=1510

        #include <bits/stdc++.h>
        using namespace std;
        const int N = 1e5 + 10;
        const int INF = 0x3f3f3f3f;
        
        int T;
        int r[30];//r[i]表示第i个时间点需要工作的人数 
        int n;
        int num[30] , x;//num[i]表示第i个时间点有多少人开始工作 
        int L , R , ans; 
        vector<pair<int,int> > vc[N];
        int dis[N];
        bool vis[N];
        queue<int> q;
        void spfa(int mid)//最长路 
        {
        	memset(dis, -INF , sizeof(dis));
        	memset(vis , 0 , sizeof(vis));
        	while(!q.empty()) q.pop();
        	dis[0] = 0;
        	vis[0] = 1;
        	
        	q.push(0);
        	
        	while(!q.empty())
        	{
        		int u = q.front();
        		q.pop();
        		if( u == 24 && dis[u] > mid)
        			return;
        		
        		vis[u] = 0;
        		for(int i = 0; i < vc[u].size(); i++)
        		{
        			int v = vc[u][i].first , w = vc[u][i].second;
        			if(dis[v] < dis[u] + w)
        			{
        				dis[v] = dis[u] +w;
        				if(!vis[v]) 
        				{
        					q.push(v);	
        					vis[v] = 1;
        				}
        			}	
        		} 
        	}
        }
        
        bool check(int mid)//一共mid人工作 
        {
        	for(int i = 0; i <= 24; i++)
        	{
        		vc[i].clear();	
        	}
        	
        	//隐藏不等式
        	//sum[i] 从1点到i点需要工作的人数
        	//	sum[i] - sum[i - 1] >= 0
        	//	sum[i - 1] - sum[i] >= -num[i]
        	for(int i = 1; i <= 24; i++)
        	{
        		vc[i - 1].push_back({i , 0});
        		vc[i].push_back({i - 1 ,-num[i]});	
        	} 
        //	23 24 1 2 3 4 5 6 7 8 9
        //	sum[i] - sum[i - 8] >= r[i]
        	for(int i = 8; i <= 24; i++)
        		vc[i - 8].push_back({i , r[i]});
        	
        //	sum[24] - sum[8] <= mid - r[i]; 
        //	sum[i] - sum[i + 16] >= r[i] - mid;
        	for(int i = 1; i <= 8; i++)
        		vc[i + 16].push_back({i , r[i] - mid});
        		
        //	sum[24] - sum[0] <= mid
        	vc[0].push_back({24,mid});
        	vc[24].push_back({0, -mid});
        	
        	spfa(mid);
        	return dis[24] == mid;
        }
        
        int main()
        {
        	cin >> T;
        	while( T-- )
        	{
        		memset(num , 0 , sizeof(num));
        		for(int i = 1; i <= 24; i++)
        			cin >> r[i];
        			
        		cin >> n;
        		//表示每个人开始工作的时间 
        		for(int i = 1; i <= n; i++)
        		{
        			cin >> x;
        			num[x + 1]++;
        		}
        		//二分答案 
        		L = 0 , R = n , ans = -1;
        		while( L <= R)
        		{
        			int mid = L + R >> 1;
        			if(check(mid))
        			{
        				ans = mid;
        				R = mid - 1;
        			}
        			else
        				L = mid + 1;
        		}
        		
        		if(ans == -1)
        			cout << "No Solution\n";
        		else
        			cout << ans << endl;
        	}
        
        	return 0;
        }
        
        
        • -4
          @ 2025-11-22 9:39:27

          #include<bits/stdc++.h> using namespace std; const int N=1e3+10; int fx(int x,int y){ return x+y; } int main() { int a=1,b=2; cin>>a>>b; cout<<fx(a,b); return 0; }

        • -4
          @ 2025-11-22 9:38:05

          #include<bits/stdc++.h> using namespace std; const int N=1e3+10; int fx(int x,int y){ return x+y; } int main() { int a=1,b=2; cin>>a>>b; cout<<fx(a,b); return 0; }

          • -4
            @ 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;//结束主函数
            }
            
            • -4
              @ 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;
              }
              
              
              • -4
                @ 2025-2-21 19:53:22

                最短题解

                #include<iostream>
                int a,b;int main(){std::cin>>a>>b;std::cout<<a+b;}
                
                • -5
                  @ 2025-7-6 23:16:54

                  #include

                  using namespace std;

                  int main()

                  {

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

                  }

                  • -5
                    @ 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;
                    }
                    
                    • -6
                      @ 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.我们使用运算符进行两个变量的运算

                      } } //全网@

                      • -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-11-10 15:03:57
                          #include<iostream> 
                          using namespace std;
                          int main(){
                          	int a,b;
                          	cin>>a>>b;
                          	cout<<a+b;
                          }
                          
                          • -6
                            @ 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;
                            }
                            
                            提示:此代码可提交题@@高精度加法***
                            
                            • -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
                              标签
                              递交数
                              4997
                              已通过
                              1410
                              上传者