全部评论 6

  • 最短:

    #include<cstdio>
    int main(){printf("5");}
    

    较长:

    #include<algorithm>
    #include<bitset>
    #include<complex>
    #include<deque>
    #include<exception>
    #include<fstream>
    #include<functional>
    #include<iomanip>
    #include<ios>
    #include<iosfwd>
    #include<iostream>
    #include<istream>
    #include<iterator>
    #include<limits>
    #include<list>
    #include<locale>
    #include<map>
    #include<memory>
    #include<new>
    #include<numeric>
    #include<ostream>
    #include<queue>
    #include<set>
    #include<sstream>
    #include<stack>
    #include<stdexcept>
    #include<streambuf>
    #include<string>
    #include<typeinfo>
    #include<utility>
    #include<valarray>
    #include<vector>
    #if __cplusplus >= 201103L
    #include<array>
    #include<atomic>
    #include<chrono>
    #include<condition_variable>
    #include<forward_list>
    #include<future>
    #include<initializer_list>
    #include<mutex>
    #include<random>
    #include<ratio>
    #include<regex>
    #include<scoped_allocator>
    #include<system_error>
    #include<thread>
    #include<tuple>
    #include<typeindex>
    #include<type_traits>
    #include<unordered_map>
    #include<unordered_set>
    #endif
    using namespace std;
    int RAND_1(long long a,long long b){
        long long n = a + b;
        cout << n;
        return 0;
    }
    int RAND_2(string a, string b, int n[500], int m[500], int ans[501]){
        for(int i = 0; i < a.size(); i++)
    		n[i] = a[a.size() - i - 1] - '0';
    	for(int i = 0; i < b.size(); i++)
    		m[i] = b[b.size() - i - 1] - '0';
    	int len_maxn = max(a.size(), b.size()) + 1;
    	for(int i = 0; i < len_maxn; i++)
    	{
    		ans[i] = n[i] + m[i] + ans[i];
    		if(ans[i] > 9)
    		{
    			ans[i + 1]++;
    			ans[i] = ans[i] % 10;
    		}
    	}
    	while(ans[len_maxn - 1] == 0 && len_maxn > 0) len_maxn--;
    	for(int i = len_maxn - 1; i >= 0; i--) cout << ans[i];
    	return 0;
    }
    int n[500], m[500],c[501];
    int main(){
        long long a , b;
        int x;
        x = 1 + rand() % 2;
        if(x == 1){
        	cin >> a >> b; 
        	RAND_1(a,b);
    	}
        string z , y;
        if(x == 2){
        	cin >> z >> y; 
        	RAND_2(z , y , n , m, c);
    	}
        return 0;
    }
    

    2025-05-12 来自 浙江

    0
    • long

      //一颗资瓷区间加、区间翻转、区间求和的Splay
      #include <bits/stdc++.h>
      #define ll long long
      #define N 100000
      using namespace std;
      int sz[N], rev[N], tag[N], sum[N], ch[N][2], fa[N], val[N];
      int n, m, rt, x;
      void push_up(int x){
      sz[x] = sz[ch[x][0]] + sz[ch[x][1]] + 1;
      sum[x] = sum[ch[x][1]] + sum[ch[x][0]] + val[x];
      }
      void push_down(int x){
      if(rev[x]){
      swap(ch[x][0], ch[x][1]);
      if(ch[x][1]) rev[ch[x][1]] ^= 1;
      if(ch[x][0]) rev[ch[x][0]] ^= 1;
      rev[x] = 0;
      }
      if(tag[x]){
      if(ch[x][1]) tag[ch[x][1]] += tag[x], sum[ch[x][1]] += tag[x];
      if(ch[x][0]) tag[ch[x][0]] += tag[x], sum[ch[x][0]] += tag[x];
      tag[x] = 0;
      }
      }
      void rotate(int x, int &k){
      int y = fa[x], z = fa[fa[x]];
      int kind = ch[y][1] == x;
      if(y == k) k = x;
      else ch[z][ch[z][1]==y] = x;
      fa[x] = z; fa[y] = x; fa[ch[x][!kind]] = y;
      ch[y][kind] = ch[x][!kind]; ch[x][!kind] = y;
      push_up(y); push_up(x);
      }
      void splay(int x, int &k){
      while(x != k){
      int y = fa[x], z = fa[fa[x]];
      if(y != k) if(ch[y][1] == x ^ ch[z][1] == y) rotate(x, k);
      else rotate(y, k);
      rotate(x, k);
      }
      }
      int kth(int x, int k){
      push_down(x);
      int r = sz[ch[x][0]]+1;
      if(k == r) return x;
      if(k < r) return kth(ch[x][0], k);
      else return kth(ch[x][1], k-r);
      }
      void split(int l, int r){
      int x = kth(rt, l), y = kth(rt, r+2);
      splay(x, rt); splay(y, ch[rt][1]);
      }
      void rever(int l, int r){
      split(l, r);
      rev[ch[ch[rt][1]][0]] ^= 1;
      }
      void add(int l, int r, int v){
      split(l, r);
      tag[ch[ch[rt][1]][0]] += v;
      val[ch[ch[rt][1]][0]] += v;
      push_up(ch[ch[rt][1]][0]);
      }
      int build(int l, int r, int f){
      if(l > r) return 0;
      if(l == r){
      fa[l] = f;
      sz[l] = 1;
      return l;
      }
      int mid = l + r >> 1;
      ch[mid][0] = build(l, mid-1, mid);
      ch[mid][1] = build(mid+1, r, mid);
      fa[mid] = f;
      push_up(mid);
      return mid;
      }
      int asksum(int l, int r){
      split(l, r);
      return sum[ch[ch[rt][1]][0]];
      }
      int main(){
      //总共两个数
      n = 2;
      rt = build(1, n+2, 0);//建树
      for(int i = 1; i <= n; i++){
      scanf("%d", &x);
      add(i, i, x);//区间加
      }
      rever(1, n);//区间翻转
      printf("%d\n", asksum(1, n));//区间求和
      return 0;
      }

      2025-05-23 来自 浙江

      0
  • 还有高手?!

    2024-12-29 来自 北京

    0
  • 《简单》

    2023-12-31 来自 浙江

    0
  • 第二个因该是利用宏定义预处理命令在每一个节点展开计算。贪心:你当我不存在?

    2023-11-02 来自 浙江

    0
  • 官方整活

    2023-08-11 来自 浙江

    0
  • I think you deliberately want to make simple topics difficult.

    2023-07-26 来自 广东

    0
首页