32 条题解

  • 2
    @ 2021-7-18 14:55:00

    #include<bits/stdc++.h> using namespace std; typedef long long ll; static char buf[100000],*p1=buf,*p2=buf; #define gc p1p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1p2)?EOF:*p1++; inline ll read() { ll res=0,w=0; char c=gc; while (!isdigit(c)) w|=c=='-',c=gc; while (isdigit(c)) res=(res<<1)+(res<<3)+(c^48),c=gc; if (w) res=-res; return res; } inline void write(ll x) { static int sta[50],top=0; if (x<0) putchar('-'),x=-x; do { sta[top++]=x%10,x/=10; }while (x); while (top) putchar(sta[--top]+48); putchar(' '); }

    signed main() { ll a=read(),b=read(); write(a+b); }

    • 0
      @ 2026-5-14 20:31:24
      #include<bits/stdc++.h>
      #define long long ll
      #define double db
      #define queue qe
      #define priority_queue pq
      #define while wh
      #define else es
      #define empty ep
      #define end ed
      #define erase er
      #define reverse rv
      #define template te
      #define throw th
      #define try ty
      #define typedef tp
      #define typename tn
      #define unordered_map u_m
      #define unordered_set u_s
      #define unsigned ug
      #define inline il
      #define insert it
      #define pair pr
      #define pop_back p_b
      #define push_back ps_b
      #define printf pf
      #define priority_queue pq
      #define private pt
      #define protected pd
      #define public pc
      #define auto at
      #define scanf sc
      #define set st
      #define short so
      #define signed sn
      #define size sz
      #define size_t sz_t
      #define sort st
      #define stack sk
      #define static stc
      #define strcmp scp
      #define strcpy scy
      #define string sig
      #define strlen sln
      #define struct srt
      #define swap sp
      #define switch sch
      #define default dt
      #define delete de
      #define deque dq
      #define find fd
      #define float ft
      #define For(i,x,y) for(int i=x;i<=y;i++) 
      #define Dor(i,x,y) for(int i=x;i>=y;i--) 
      #define free fe
      #define list lt
      #define case cs
      #define catch cth
      #define char cr
      #define class cls
      #define clear ce
      #define const cst
      #define continue cte
      #define vector vtr
      #define virtual vrl
      #define void vd
      #define begin bg
      #define break bk
      #define new nw
      #define nullptr nlpr
      #define malloc mlc
      #define map mp
      #define max mx
      #define memcpy mcy
      #define memset mst
      #define min mn
      #define sizeof sf
      #define main() ma()
      using namespace std;
      int a,b;
      int main()
      {
      	cin>>a>>b;
      	cout<<a+b;
      	return 0;
      }
      
      • 0
        @ 2026-4-18 11:29:11
        #include<bits/stdc++.h>
        using namespace std;
        int a,b;
        int main()
        {
        	cin>>a>>b;
        	cout<<b+a;
        	return 0;
        }
        
        • 0
          @ 2026-3-26 16:42:42
          #include<bits/stdc++.h>
          using namespace std;
          int n;
          int main()
          {
              cin>>n;
              if((n/100)>0) cout<<n/100<<endl,n%=100;
              else cout<<0<<endl;
              if((n/50)>0) cout<<n/50<<endl,n%=50;
              else cout<<0<<endl;
              if((n/20)>0) cout<<n/20<<endl,n%=20;
              else cout<<0<<endl;
              if((n/10)>0) cout<<n/10<<endl,n%=10;
              else cout<<0<<endl;
              if((n/5)>0) cout<<n/5<<endl,n%=5;
              else cout<<0<<endl;
              if((n/1)>0) cout<<n/1<<endl,n%=1;
              else cout<<0<<endl;
              return 0;
          }
          
          • 0
            @ 2026-2-15 10:06:22

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

            • 0
              @ 2026-2-12 8:26:59

              • 0
                @ 2026-2-7 12:48:54

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

                • 0
                  @ 2025-9-13 14:44:46

                  李洺宇 (xhlmy)

                  • 0
                    @ 2025-7-24 16:03:57
                    #include<bits/stdc++.h>
                    using namespace std;
                    int n,fac[50000],ans[50000]={1,1};
                    int main()
                    {
                        cin>>n;
                        for(int i=1;i<=n;i++)
                        {
                            for (int j=1;j<=ans[0];j++)
                            {
                                ans[j]=ans[j]*i+fac[j];
                                fac[j]=0;
                                if (ans[j]>=10)
                                {
                                    fac[j+1]+=ans[j]/10;
                                    ans[j]%=10;
                                    if (j==ans[0]) ++ans[0];
                                }
                            }
                        }
                        for (int i=ans[0];i>0;i--) cout<<ans[i];
                    }
                    
                    • 0
                      @ 2025-7-24 15:50:23
                      #include <bits/stdc++.h>
                      using namespace std;
                      string n,m;
                      string cheng(string n,string m)
                      {
                          string k="";
                          int *a,*b,*f,la=n.size(),lb=m.size(),lf=la+lb;
                          a=new int[la+1];
                          b=new int[lb+1];
                          f=new int[lf+1];
                          for(int i=1;i<=la;i++) a[i]=0;
                          for(int i=1;i<=lb;i++) b[i]=0;
                          for(int i=1;i<=lf;i++) f[i]=0;
                          for(int i=la-1;i>=0;i--) a[la-i]=n[i]-'0';
                          for(int i=lb-1;i>=0;i--) b[lb-i]=m[i]-'0';
                          for(int i=1;i<=la;i++)
                              for(int j=1;j<=lb;j++)
                                  f[i+j-1]+=a[i]*b[j];
                          for(int i=1;i<=lf;i++)
                          {
                              f[i+1]+=f[i]/10;
                              f[i]%=10;
                          }
                          while(f[lf]==0&&lf>1) lf--;
                          for(int i=lf;i>=1;i--) k=k+char(f[i]+'0');
                          return k;
                      }
                      string jia(string n,string m)
                      {
                          string k="";
                          int *f,*a,*b,la=n.size(),lb=m.size(),lf=max(la,lb)+1;
                          a=new int[lf+1];
                          b=new int[lf+1];
                          f=new int[lf+1];
                          for(int i=1;i<=lf;i++) a[i]=0;
                          for(int i=1;i<=lf;i++) b[i]=0;
                          for(int i=1;i<=lf;i++) f[i]=0;
                      	for(int i=1;i<=la;i++) a[i]=n[la-i]-'0';
                      	for(int i=1;i<=lb;i++) b[i]=m[lb-i]-'0';
                      	for(int i=1;i<=lf;i++)
                      	{
                      		f[i]+=a[i]+b[i];
                      		if(f[i]>=10)
                      		{
                      			f[i]-=10;
                      			f[i+1]++;
                      		}
                      	}
                      	if(f[lf]==0) lf--;
                          for(int i=lf;i>=1;i--) k=k+char(f[i]+'0');
                          return k;
                      }
                      string jian(string n,string m)
                      {
                          string k="";
                          int *a,*b,*f,la=n.size(),lb=m.size(),lf;
                          if(lb>la||la==lb&&n<m)
                          {
                              swap(n,m);
                              swap(la,lb);
                              cout<<'-';
                          }
                          lf=la;
                          a=new int[lf+1];
                          b=new int[lf+1];
                          f=new int[lf+1];
                          for(int i=1;i<=lf;i++) a[i]=0;
                          for(int i=1;i<=lf;i++) b[i]=0;
                          for(int i=1;i<=lf;i++) f[i]=0;
                          for(int i=1;i<=la;i++) a[i]=n[la-i]-'0';
                      	for(int i=1;i<=lb;i++) b[i]=m[lb-i]-'0';
                          for(int i=1;i<=lf;i++)
                          {
                              if(a[i]<b[i])
                              {
                                  a[i+1]--;
                                  a[i]+=10;
                              }
                              f[i]=a[i]-b[i];
                          }
                          while(f[lf]==0&&lf>1) lf--;
                          for(int i=lf;i>=1;i--) k=k+char(f[i]+'0');
                          return k;
                      }
                      int sub(int *a,int *b,int La,int Lb)
                      {
                          if(La<Lb) return -1;
                          if(La==Lb)
                          {
                              for(int i=La-1;i>=0;i--)
                                  if(a[i]>b[i]) break;
                                  else if(a[i]<b[i]) return -1;
                      
                          }
                          for(int i=0;i<La;i++)
                          {
                              a[i]-=b[i];
                              if(a[i]<0) a[i]+=10,a[i+1]--;
                          }
                          for(int i=La-1;i>=0;i--)
                              if(a[i]) return i+1;
                          return 0;
                      
                      }
                      string div(string n1,string n2,bool nn)
                      {
                          const int L=1e5;
                          string s,v;
                          int a[L],b[L],r[L],La=n1.size(),Lb=n2.size(),i,tp=La;
                          fill(a,a+L,0);fill(b,b+L,0);fill(r,r+L,0);
                          for(i=La-1;i>=0;i--) a[La-1-i]=n1[i]-'0';
                          for(i=Lb-1;i>=0;i--) b[Lb-1-i]=n2[i]-'0';
                          if(La<Lb||(La==Lb&&n1<n2))
                          {
                              if(nn) return "0";
                                  else return n1;
                          }
                          int t=La-Lb;
                          for(int i=La-1;i>=0;i--)
                             if(i>=t) b[i]=b[i-t];
                             else b[i]=0;
                          Lb=La;
                          for(int j=0;j<=t;j++)
                          {
                              int temp;
                              while((temp=sub(a,b+j,La,Lb-j))>=0)
                              {
                                  La=temp;
                                  r[t-j]++;
                              }
                          }
                          for(i=0;i<L-10;i++) r[i+1]+=r[i]/10,r[i]%=10;
                          while(!r[i]) i--;
                          while(i>=0) s+=r[i--]+'0';
                          i=tp;
                          while(!a[i]) i--;
                          while(i>=0) v+=a[i--]+'0';
                          if(v.empty()) v="0";
                          if(nn==1) return s;
                          else return v;
                      }
                      string h(string n,char w,string m)
                      {
                          if(w=='+') return jia(n,m);
                          else if(w=='*') return cheng(n,m);
                          else if(w=='-') return jian(n,m);
                          else if(w=='/') return div(n,m,1);
                          else return div(n,m,0);
                      }
                      int main()
                      {
                          ios::sync_with_stdio(false);
                          cin.tie(0),cout.tie(0);
                          cin>>n>>m;
                          cout<<h(n,'+',m)<<endl;
                          cout<<h(n,'-',m)<<endl;
                          cout<<h(n,'*',m)<<endl;
                          cout<<h(n,'/',m)<<endl;
                          cout<<h(n,'%',m);
                          return 0;
                      }
                      
                      • 0
                        @ 2025-7-17 11:19:18

                        #include <bits/stdc++.h> using namespace std; int a,b,s; int f(int x,int y){ return x+y; } int main() { cin>>a>>b; s=0; s=1; s=9; s=2; s=9; s=4; s=4; s=4; s=4; s=4; s=4; s=4; s=4; s=4; s=4; s=4; s=4; s=4; s=4; s=4; s=4; cout<<a+b; }

                        • 0
                          @ 2025-7-14 15:28:15

                          print(char(7))

                          • 0
                            @ 2025-7-13 14:29:17

                            高精加​

                            #include<bits/stdc++.h>
                            using namespace std;
                            int a[2000],b[2000],f[2000];
                            int main()
                            {
                            	string n,m;
                            	cin>>n>>m;
                            	int a1=n.size(),a2=m.size(),a3=max(a1,a2)+1;
                            	for (int i=1;i<=a1;i++) a[i]=n[a1-i]-'0';
                            	for (int i=1;i<=a2;i++) b[i]=m[a2-i]-'0';
                            	for (int i=1;i<=a3;i++)
                            	{
                            		f[i]+=a[i]+b[i];
                            		if (f[i]>=10)
                            		{
                            			f[i]-=10;
                            			f[i+1]++;
                            		}
                            	}
                            	if (f[a3]==0) a3--;
                            	for (int i=a3;i>=1;i--) cout<<f[i];
                            }
                            
                            • 0
                              @ 2025-7-12 16:18:54

                              #include <bits/stdc++.h> using namespace std; int n,m,x,t; char a[200][200]; int main() { cin>>n>>m>>x; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]>='a'){ t=a[i][j]-32+x; if(t>'Z') t=t-26; } else{ t=a[i][j]+32+x; if(t>'z') t=t-26; } cout<<char(t); } cout<<endl; } return 0; }

                              • 0
                                @ 2025-7-12 16:18:48

                                姓马的,不要叫!

                                • 0
                                  @ 2025-7-12 16:18:41

                                  #include <bits/stdc++.h> using namespace std; int n,m,x,t; char a[200][200]; int main() { cin>>n>>m>>x; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]>='a'){ t=a[i][j]-32+x; if(t>'Z') t=t-26; } else{ t=a[i][j]+32+x; if(t>'z') t=t-26; } cout<<char(t); } cout<<endl; } return 0; }

                                  • 0
                                    @ 2025-7-12 15:50:20
                                    #include<bits/stdc++.h>
                                    using namespace std;
                                    long long a,b;
                                    int main()
                                    { 
                                     
                                    	cin>>a>>b;
                                    	cout<<a+b;
                                    	return 0;
                                    }
                                    
                                    • 0
                                      @ 2025-6-2 19:04:16

                                      记得一键三连哦!

                                      超级详细的!

                                      注意(打个广告:我们班的xhchenyr超级有实力的!!!)

                                      c++

                                      #include<bits/stdc++.h>
                                      using namespace std;
                                      int a[2000],b[2000],f[2000],l,p,o,g;
                                      int main()
                                      {
                                      	string n,m;
                                      	cin>>n>>m;
                                      	int a1=n.size(),a2=m.size(),a3=max(a1,a2)+1;
                                      	for (int i=1;i<=a1;i++) a[i]=n[a1-i]-'0';
                                      	for (int i=1;i<=a2;i++) b[i]=m[a2-i]-'0';
                                      	for (int i=1;i<=a3;i++)
                                      	{
                                      		f[i]+=a[i]+b[i];
                                      		if (f[i]>=10)
                                      		{
                                      			f[i]-=10;
                                      			f[i+1]++;
                                      		}
                                      	}
                                      	if (f[a3]==0) a3--;
                                      	for (int i=a3;i>=1;i--) cout<<f[i];
                                      }
                                      

                                      c

                                      #include <stdio.h>
                                      int main() 
                                      {
                                          int a,b;
                                          scanf ("%d %d",&a,&b);
                                          printf ("%d",a+b);
                                       }
                                      

                                      Python 2

                                      a=input()
                                      b=input()
                                      print(a+b)
                                      

                                      Python 3

                                      try:
                                          while True:
                                      	    a,b=map(int,input().split(' '))
                                      	    print(a+b)
                                      except:
                                      	pass
                                      

                                      还有c++方法!!!

                                      最短路之Dijkstra c++

                                      #include<bits/stdc++.h>
                                      using namespace std;
                                      const int N = 200020;
                                      int n, m, h[N], e[N], w[N], ne[N], idx;
                                      int dist[N];
                                      bool st[N];
                                      void add(int a, int b, int c)
                                      {
                                          e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
                                      }
                                      int dijkstra()
                                      {
                                          priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> heap;
                                          heap.push({0, 1});
                                          memset(dist, 0x3f, sizeof dist);
                                          dist[1] = 0;
                                          while(!heap.empty())
                                          {
                                              auto t = heap.top();
                                              heap.pop();
                                              int vel = t.second;
                                              if(st[vel]) continue;
                                              st[vel] = true;
                                              for(int i = h[vel]; i != -1; i = ne[i])
                                              {
                                                  int j = e[i];
                                                  if(dist[j] > dist[vel] + w[i])
                                                  {
                                                      dist[j] = dist[vel] + w[i];
                                                      heap.push({dist[j], j});
                                                  }
                                              }
                                          }
                                          if(dist[3] == 0x3f3f3f3f) return -1;
                                          return dist[3];
                                      }
                                      int main()
                                      {
                                          int a, b;
                                          memset(h, -1, sizeof h);
                                          cin >> a >> b;
                                          add(1, 2, a);
                                          add(2, 3, b);
                                          int t = dijkstra();
                                          cout << t;
                                          return 0;
                                      }
                                      

                                      矩阵乘法 c++

                                      #include<bits/stdc++.h>
                                      using namespace std;
                                      int q, b;
                                      int a[2][2] = 
                                      {
                                          {0, 1},
                                          {1, 1}
                                      };
                                      int n;
                                      void mo(int f[])
                                      {
                                          int ans[2] = {0};
                                          for(int i = 0; i < 2; i ++)
                                          {
                                              for(int j = 0; j < 2; j ++)
                                              {
                                                  ans[i] += f[j] * a[i][j];
                                              }
                                          }
                                          for(int i = 0; i < 2; i ++) f[i] = ans[i];
                                      }
                                      int main()
                                      {
                                          cin >> q >> b;
                                          int f[3] = {q, b};
                                          for(int i = 1; i <= 1; i ++) mo(f);
                                          cout << f[1];
                                          return 0;
                                      }
                                      

                                      递推解法 c++

                                      #include<bits/stdc++.h>
                                      using namespace std;
                                      int f[3];
                                      int main()
                                      {
                                          int a, b;
                                          cin >> a >> b;
                                          f[1] = a;
                                          f[2] = b;
                                          for(int i = 3; i <= 3; i ++ ) f[i] = f[i - 1] + f[i - 2];
                                          cout << f[3] << endl;
                                          return 0;
                                      }
                                      

                                      二分 c++

                                      #include <bits/stdc++.h>
                                      using namespace std;
                                      int a, b;
                                      int main() {
                                          scanf("%d%d", &a, &b);
                                          int l = 0, r = 200000000;
                                          while (l < r) {
                                              int mid = l + r >> 1;
                                              if (mid == a + b) {printf("%d\n", mid); return 0;}
                                              if (mid <  a + b) l = mid + 1;
                                              if (mid >  a + b) r = mid - 1;
                                          }
                                          cout << l << endl;
                                          return 0;
                                      }
                                      

                                      前缀和

                                      #include <bits/stdc++.h>
                                      using namespace std;
                                      int a[5], s[5];
                                      int main() {
                                          for (int i = 1;i <= 2; i++) scanf("%d", &a[i]), s[i] += a[i] + s[i - 1];
                                          printf("%d\n", s[2]);
                                          return 0;
                                      }
                                      

                                      后缀和

                                      #include <bits/stdc++.h>
                                      using namespace std;
                                      int a[5], s[5];
                                      int main() {
                                          for (int i = 2;i >= 1; i--) scanf("%d", &a[i]), s[i] += a[i] + s[i + 1];
                                          printf("%d\n", s[1]);
                                          return 0;
                                      }
                                      

                                      网络流 c++

                                      #include<bits/stdc++.h>
                                      using namespace std;
                                      #define set(x) Set(x)
                                      #define REP(i,j,k) for (int i=(j),_end_=(k);i<=_end_;++i)
                                      #define DREP(i,j,k) for (int i=(j),_start_=(k);i>=_start_;--i)
                                      #define mp make_pair
                                      #define x first
                                      #define y second
                                      #define pb push_back
                                      template<typename T> inline bool chkmin(T &a,const T &b){ return a > b ? a = b, 1 : 0; }
                                      template<typename T> inline bool chkmax(T &a,const T &b){ return a < b ? a = b, 1 : 0; }
                                      typedef long long LL;
                                      typedef pair<int,int> node;
                                      const int dmax = 1010, oo = 0x3f3f3f3f;
                                      int n, m;
                                      int a[dmax][dmax] , ans;
                                      int d[dmax], e[dmax];
                                      priority_queue <node> q;
                                      inline bool operator >(node a,node b){ return a.y>b.y; }
                                      bool p[dmax];
                                      void Set(int x){ p[x] = 1; }
                                      void unset(int x){ p[x] = 0; }
                                      bool check(int x){ return x != 1 && x != n && !p[x] && e[x] > 0; }
                                      void preflow(){
                                          e[1] = oo;
                                          d[1] = n - 1;
                                          q.push(mp(1, n - 1));
                                          set(1);
                                          while (!q.empty()) {
                                              bool flag = 1;
                                              int k = q.top().x;
                                              q.pop(), unset(k);
                                              DREP(i, n, 1)
                                              if ((d[k] == d[i] + 1 || k == 1) && a[k][i] > 0){
                                                  flag = 0;
                                                  int t = min(a[k][i], e[k]);
                                                  e[k] -= t;
                                                  a[k][i] -= t;
                                                  e[i] += t;
                                                  a[i][k] += t;
                                                  if (check(i)) {
                                                      q.push(mp(i, d[i]));
                                                      set(i);
                                                  }
                                                  if (e[k] == 0) break;
                                              }
                                              if (flag) {
                                                  d[k] = oo;
                                                  REP(i, 1, n)
                                                  if (a[k][i] > 0) chkmin(d[k], d[i] + 1);
                                              }
                                              if (check(k)) {
                                                  q.push(mp(k, d[k]));
                                                  set(k);
                                              }
                                          }
                                          ans = e[n];
                                      }
                                      int main() {
                                          n = 2, m = 2;
                                          int x, y;
                                          scanf("%d%d", &x, &y);
                                          a[1][2] += x + y;
                                          preflow();
                                          printf("%d\n", ans);
                                          return 0;
                                      }
                                      

                                      分块 c++

                                      #include<bits/stdc++.h>
                                      using namespace std;
                                      long long a[50000010], sum[50000010], add[50000010];
                                      int L[50000010], R[50000010];
                                      int pos[50000010];
                                      int n = 1, m = 2, t;
                                      
                                      void change(int l, int r, long long d) {
                                          int p = pos[l], q = pos[r];
                                          if (p == q) {
                                              for (int i = l; i <= r; i++) a[i] += d;
                                              sum[p] += d*(r - l + 1);
                                          }
                                          else {
                                              for (int i = p + 1; i <= q - 1; i++) add[i] += d;
                                              for (int i = l; i <= R[p]; i++) a[i] += d;
                                              sum[p] += d*(R[p] - l + 1);
                                              for (int i = L[q]; i <= r; i++) a[i] += d;
                                              sum[q] += d*(r - L[q] + 1);
                                          }
                                      }
                                      
                                      long long ask(int l, int r) {
                                          int p = pos[l], q = pos[r];
                                          long long ans = 0;
                                          if (p == q) {
                                              for (int i = l; i <= r; i++) ans += a[i];
                                              ans += add[p] * (r - l + 1);
                                          }
                                          else {
                                              for (int i = p + 1; i <= q - 1; i++)
                                                  ans += sum[i] + add[i] * (R[i] - L[i] + 1);
                                              for (int i = l; i <= R[p]; i++) ans += a[i];
                                              ans += add[p] * (R[p] - l + 1);
                                              for (int i = L[q]; i <= r; i++) ans += a[i];
                                              ans += add[q] * (r - L[q] + 1);
                                          }
                                          return ans;
                                      }
                                      
                                      int main() {
                                          a[1] = 0;
                                          t = sqrt(n*1.0);
                                          for (int i = 1; i <= t; i++) {
                                              L[i] = (i - 1)*sqrt(n*1.0) + 1;
                                              R[i] = i*sqrt(n*1.0);
                                          }
                                          if (R[t] < n) t++, L[t] = R[t - 1] + 1, R[t] = n;
                                          for (int i = 1; i <= t; i++)
                                              for (int j = L[i]; j <= R[i]; j++) {
                                                  pos[j] = i;
                                                  sum[i] += a[j];
                                              }
                                          while (m--) {
                                              int d;
                                              scanf("%d", &d);
                                              change(1, 1, d);
                                          }
                                          printf("%lld\n", ask(1, 1));
                                      }
                                      

                                      LCT c++

                                      #include<bits/stdc++.h>
                                      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);
                                          connect(A,B);
                                          cut(A,B);
                                          connect(A,B);
                                          printf("%d",query(A,B));
                                          return 0;
                                      }
                                      

                                      暴力枚举优化版 c++

                                      #include <bits/stdc++.h>
                                      using namespace std;
                                      int main() {
                                          int a, b; scanf("%d%d", &a, &b);
                                          for (int i = min(2 * a, 2 * b);i <= max(2 * a, 2 * b); i++)
                                              if (a + b == i) {
                                                  printf("%d", i); //注意要输出i,不然如果输出a+b循环就没意义了……
                                                  return 0;
                                              }
                                      }
                                      

                                      极限卡点 c++

                                      #include <bits/stdc++.h>
                                      using namespace std;
                                      int st = clock();
                                      int main() {
                                          int a, b; scanf("%d%d", &a, &b);
                                          while (clock() - st < 995000) {}
                                          printf("%d", a + b);
                                          return 0;
                                      }
                                      

                                      Treap(平衡树)c++

                                      #include<bits/stdc++.h>
                                      using namespace std;
                                      const int N=1e5+5,INF=(1ll<<31)-1;
                                      struct BST
                                      {
                                          int l,r,x,p,siz,cnt;
                                      }a[N];
                                      int q,p,idx,root;
                                      int New(int x)
                                      {
                                          a[++idx].x=x;
                                          a[idx].p=rand();
                                          a[idx].siz=a[idx].cnt=1;
                                          return idx;
                                      }
                                      void Update(int u)
                                      {
                                          a[u].siz=a[a[u].l].siz+a[a[u].r].siz+a[u].cnt;
                                      }
                                      void Build()
                                      {
                                          New(-INF),New(INF);
                                          root=1,a[1].r=2;
                                          Update(root);
                                      }
                                      int GetRank(int u,int x)
                                      {
                                          if(!u) return 0;
                                          if(x==a[u].x) return a[a[u].l].siz;
                                          if(x<a[u].x) return GetRank(a[u].l,x);
                                          else return GetRank(a[u].r,x)+a[a[u].l].siz+a[u].cnt;
                                      }
                                      int GetValue(int u,int x)
                                      {
                                          if(!u) return INF;
                                          if(a[a[u].l].siz>=x) return GetValue(a[u].l,x);
                                          if(a[a[u].l].siz+a[u].cnt>=x) return a[u].x;
                                          return GetValue(a[u].r,x-a[a[u].l].siz-a[u].cnt);
                                      }
                                      void zig(int &u)
                                      {
                                          int v=a[u].l;
                                          a[u].l=a[v].r,a[v].r=u,u=v;
                                          Update(a[u].r),Update(u);
                                      }
                                      void zag(int &u)
                                      {
                                          int v=a[u].r;
                                          a[u].r=a[v].l,a[v].l=u,u=v;
                                          Update(a[u].l),Update(u);
                                      }
                                      void Insert(int &u,int x)
                                      {
                                          if(!u)
                                          {
                                              u=New(x);
                                              return;
                                          }
                                          if(x==a[u].x)
                                          {
                                              a[u].cnt++,Update(u);
                                              return;
                                          }
                                          if(x<a[u].x) 
                                          {
                                              Insert(a[u].l,x);
                                              if(a[u].p<a[a[u].l].p)
                                                  zig(u);
                                          }
                                          else
                                          {
                                              Insert(a[u].r,x);
                                              if(a[u].p<a[a[u].r].p)
                                                  zag(u);
                                          }
                                          Update(u);
                                      }
                                      int GetPrev(int u,int x,int res)
                                      {
                                          if(a[u].x>=x)
                                          {
                                              if(!a[u].l) return res;
                                              return GetPrev(a[u].l,x,res);
                                          }
                                          if(!a[u].r) return a[u].x;
                                          return GetPrev(a[u].r,x,a[u].x);
                                      }
                                      int GetNext(int u,int x,int res)
                                      {
                                          if(a[u].x<=x)
                                          {
                                              if(!a[u].r) return res;
                                              return GetNext(a[u].r,x,res);
                                          }
                                          if(!a[u].l) return a[u].x;
                                          return GetNext(a[u].l,x,a[u].x);
                                      }
                                      void Remove(int &u,int x)
                                      {
                                          if(!u) return;
                                          if(x==a[u].x)
                                          {
                                              if(a[u].cnt>1)
                                              {
                                                  a[u].cnt--,Update(u);
                                                  return;
                                              }
                                              if(a[u].l||a[u].r)
                                              {
                                                  if(!a[u].r||a[a[u].l].p>a[a[u].r].p)
                                                      zig(u),Remove(a[u].r,x);
                                                  else zag(u),Remove(a[u].l,x);
                                                  Update(u);
                                                  return;
                                              }
                                              u=0;
                                              return;
                                          }
                                          if(x<a[u].x) Remove(a[u].l,x);
                                          else Remove(a[u].r,x);
                                          Update(u);
                                      }
                                      int main()
                                      {
                                          cin>>q>>p;
                                          if(q>p) swap(q,p);
                                          Build();
                                          Insert(root,q);Insert(root,p);
                                          Remove(root,p);Insert(root,p);
                                          cout<<(GetPrev(root,p,-INF)+GetNext(root,q,INF)+GetValue(root,GetRank(root,q)+1)+GetValue(root,GetRank(root,p)+1))/2<<endl;
                                          return 0;
                                      }
                                      

                                      马占武看我写的代码

                                      这就是我的实力!哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

                                      • 0
                                        @ 2025-4-21 16:43:24
                                        #include<bits/stdc++.h>
                                        using namespace std;
                                        int a[2000],b[2000],f[2000],l,p,o,g;
                                        int main()
                                        {
                                        	string n,m;
                                        	cin>>n>>m;
                                        	int a1=n.size(),a2=m.size(),a3=max(a1,a2)+1;
                                        	for (int i=1;i<=a1;i++) a[i]=n[a1-i]-'0';
                                        	for (int i=1;i<=a2;i++) b[i]=m[a2-i]-'0';
                                        	for (int i=1;i<=a3;i++)
                                        	{
                                        		f[i]+=a[i]+b[i];
                                        		if (f[i]>=10)
                                        		{
                                        			f[i]-=10;
                                        			f[i+1]++;
                                        		}
                                        	}
                                        	if (f[a3]==0) a3--;
                                        	for (int i=a3;i>=1;i--) cout<<f[i];
                                        }
                                        
                                        

                                        信息

                                        ID
                                        1
                                        时间
                                        1000ms
                                        内存
                                        256MiB
                                        难度
                                        3
                                        标签
                                        (无)
                                        递交数
                                        535
                                        已通过
                                        284
                                        上传者