/*LL大法好,退int保平安 人在做,天在看,32次方留祸患 数据溢出天地灭,快换类型保平安 众生都为AC来,WA爆零亲友散 早日封杀INT,早日获得新生 百度搜,九评I N T,有 真 相*/ #include <iostream> #include <cstring> #include <algorithm> #include <stack> #define MAXN 100000 + 10 #define mod 998244353 using namespace std; long long t, m, n, l, r, x, min2, min3; long long a[MAXN], b[MAXN]; long long ksm(long long d, long long x) { long long s[1000]; long long p = 0; while (x) { s[p] = x % 2; x = x / 2; p++; } p--; long long sum = 1, tmp = d; for (int i = 0; i <= p; i++) { if (i == 0) tmp = d; else tmp = tmp * tmp % mod; if (s[i]) sum = sum * tmp % mod; //tmp 3 //sum 3 } return sum; } int main() { scanf_s("%lld", &t); for (int i = 1; i <= t; i++) { min2 = 0x3f3f3f; min3 = 0x3f3f3f; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); scanf_s("%lld%lld", &n, &m); for (int j = 1; j <= m; j++) { scanf_s("%lld%lld%lld", &l, &r, &x); if (x == 2) { a[l]++; a[r + 1]--; } if (x == 3) { b[l]++; b[r + 1]--; } } for (int j = 1; j <= n; j++) { a[j] += a[j - 1]; b[j] += b[j - 1]; min2 = min(min2, a[j]); min3 = min(min3, b[j]); } long long ans = 0; ans = ksm(2, min2) % mod * ksm(3, min3) % mod; printf_s("%lld\n", ans); } return 0; }
无力了,回去补题