登录—专业IT笔试面试备考平台_牛客网
主要是学习到了将一个区间加常数 or加x or加 x的2次方
#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include typedef long long ll; typedef unsigned long long ull; using namespace std; const int MN = 65005; const int MAXN = 1e6 + 10; const int INF = 0x3f3f3f3f; #define IOS ios::sync_with_stdio(false); #define lowbit(x) ((x)&(-x)) int a[MAXN]; int b[MAXN]; int c[MAXN]; const int mod = 1e9 + 7; inline void calc(int *s, int n) { for (int i = 1; i <= n; i++) { s[i] = (s[i] + s[i - 1]) % mod; } } inline void solve() { int n, q; int ty, pos; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); memset(c, 0, sizeof(c)); scanf("%d %d", &n, &q); for (int i = 1; i <= q; i++) { scanf("%d %d", &ty, &pos); if (ty == 1) { a[pos]++; } else if (ty == 2) { b[pos]++; } else { c[pos]++; c[pos + 1]++; } } calc(a, n); for (int i = 1; i <= 2; i++) calc(b, n); for (int i = 1; i <= 3; i++) calc(c, n); for (int i = 1; i <= n; i++) printf(i == n ? "%dn" : "%d ", (a[i] + b[i] + c[i]) % mod); } int main() { int t; scanf("%d", &t); while (t--) { solve(); } return 0; }
上一篇 JavaWeb 项目 --- 博客系统
下一篇 Java编程思想笔记二:初始化与清理
版权所有 (c)2021-2022 MSHXW.COM
ICP备案号:晋ICP备2021003244-6号