2 条题解

  • 0
    @ 2024-12-20 4:26:26

    RUST MLE 经典考题。论 IO 的实现

    这里用ffi的io或者其他办法的io是有办法规避io引起的MLE的,但是思路一样,无所谓啦

    fn solve(input: &mut FastReader<impl BufRead>, output: &mut BufWriter<impl Write>) -> Result<()> {
        _ = input.nextln();
        let mut arr = input.readln::<i64>();
        while input.has_next() {
            let tmp = input.readln::<usize>();
            if tmp[0] == 1 {
                let [_, l, r, k] = &tmp[..] else { todo!() };
                arr[*l - 1..*r].rotate_right(k % (r - l + 1));
            } else {
                let [_, i] = &tmp[..] else { todo!() };
                writeln!(output, "{}", arr[i - 1])?;
            }
        }
        Ok(())
    }
    
    • 0
      @ 2024-12-12 23:15:48
      #include<iostream>
      #include<vector>
      using namespace std;
      typedef long long ll;
      const int N = 1e7 + 10;
      int n, q;
      vector<ll>a(N);
      void roll(vector<ll>& a, int l, int r)
      {
          for (int i = l, j = r; i <j; i++, j--)
          {
             swap(a[i],a[j]);
          }
      }
      int main()
      {
          scanf("%d%d",&n,&q);
          for (int i = 0; i < n; i++)
          {
              scanf("%lld",&a[i]);
          }
          while (q--)
          {
              int op;
              scanf("%d",&op);
              if (op == 1)
              {
                  int l, r, k;
                  scanf("%d%d%d",&l,&r,&k);
                  l--, r--;
                  int len = r - l + 1;
                  k %= len;
                  roll(a, l, r), roll(a, l, l + k - 1), roll(a, l + k, r);
              }
              else
              {
                  int x;
                  scanf("%d",&x);
                  printf("%lld\n",a[x-1]);
              }
          }
          return 0;
      }
      
      • 1

      信息

      ID
      1083
      时间
      1500ms
      内存
      256MiB
      难度
      9
      标签
      递交数
      86
      已通过
      6
      上传者