1 条题解
-
0
C++ :
#include <stdio.h> #include <assert.h> #include <iostream> const int MOD = 1000000007; const int N = 100000 + 5; const int K = 23; typedef long long llong; #define debug(x) std::cout << (#x) << "=" << (x) << std::endl; int f[N][K]; int a[K], b[K]; int main() { int casc; scanf("%d", &casc); for (int casi = 1; casi <= casc; ++casi) { int k, n; scanf("%d %d", &k, &n); for (int i = 1; i <= k; ++i) f[0][i] = i; int l, r; for (int i = 1; i <= n; ++i) { scanf("%d %d", &l, &r); int* pre = f[i-1]; int* now = f[i]; for (int j = 1; j <= k; ++j) { if (l <= j && j <= r) now[j] = pre[r-j+l]; else now[j] = pre[j]; } } int q; scanf("%d", &q); llong result = 0; for (int qi = 1; qi <= q; ++qi) { int l, r; scanf("%d %d", &l, &r); int* fl = f[l-1]; int* fr = f[r]; for (int i = 1; i <= k; ++i) a[fl[i]] = i; for (int i = 1; i <= k; ++i) b[i] = a[fr[i]]; llong hsh = 0; llong power = 1; for (int i = 1; i <= k; ++i) { power = power * 23 % MOD; hsh = (hsh + b[i] * power) % MOD; } result = (result + hsh) % MOD; } printf("%d\n", result); } return 0; }
- 1
信息
- ID
- 3509
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者