Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
1831 16级赵子潇 【S】T3 分块 C++ 运行超时 30 2000 MS 25720 KB 1130 2020-11-16 11:16:33

Tests(6/20):


#include <bits/stdc++.h> using namespace std; #define int long long char buf[1 << 21], *p1 = buf, *p2 = buf; inline char getc(){ return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++; } inline void read(int &x){ x = 0; char s = getc(); while(s < '0' || s > '9') s = getc(); while('0' <= s && s <= '9'){ x = (x << 3) + (x << 1) + (s ^ 48); s = getc(); } } void print(const int &x){ if(x > 9) print(x / 10); putchar(x % 10 + '0'); } const int N = 1000010; int n, m, ans, B, l[N], r[N], belong[N]; inline void query(int l, int r){ if(belong[l] == belong[r]){ ans += r - l + 1; return; } if(belong[l] + 1 <= belong[r] - 1) ans += belong[r] - belong[l] - 1; int R = belong[l] * B, L = (belong[r] - 1) * B + 1; ans += r - L + 1; ans += R - l + 1; } signed main() { read(n); read(m); for(int i = 1;i <= m;i++) read(l[i]), read(r[i]); for(int i = 1;i <= n;i++){ B = i; ans = 0; for(int i = 1;i <= n;i++) belong[i] = (i - 1) / B + 1; for(int i = 1;i <= m;i++) query(l[i], r[i]); print(ans); putchar('\n'); } return 0; }


测评信息: