P9994 [Ynoi Easy Round 2024] TEST_132 题解
考虑根号分治。设阈值为
询问时,至多
取
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <map>
#include <string>
#include <cmath>
#include <vector>
using namespace std;
const int N = 1e6 + 5;
constexpr long long MOD = 1e9 + 7;
int n, m, x[N], y[N];
long long v[N];
vector<pair<int, long long>> p[N];
vector<pair<int, int>> p2[N];
long long tag[N];
const int B = 3000;
long long sum[N];
long long qpow(long long a, long long b)
{
long long res = 1LL, base = a;
while (b)
{
if (b & 1LL)
{
res = res * base % MOD;
}
base = base * base % MOD;
b >>= 1LL;
}
return res;
}
namespace FastIO
{
char* p1, * p2, buf[1 << 14];
#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, (1 << 14), stdin), p1 == p2) ? EOF : *p1++)
template <typename T>
inline void read(T& x)
{
x = 0;
char ch = getchar();
while (ch < '0' || ch > '9') {
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
x = (x << 1) + (x << 3) + (ch ^ 48);
ch = getchar();
}
}
template <typename T>
void write(T x) {
if (x < 0) {
putchar('-');
x = -x;
}
if (x > 9) write(x / 10);
putchar(x % 10 ^ 48);
}
template <typename T>
inline void writeln(T x, char sep = '\n') {
write(x);
putchar(sep);
}
}
int main()
{
FastIO::read(n), FastIO::read(m);
for (int i = 0; i < N; i++) tag[i] = 1LL;
for (int i = 1; i <= n; i++)
{
FastIO::read(x[i]), FastIO::read(y[i]), FastIO::read(v[i]);
p[x[i]].emplace_back(make_pair(y[i], v[i]));
}
for (int i = 1; i <= n; i++)
{
if (p[x[i]].size() <= B) sum[y[i]] = (sum[y[i]] + v[i]) % MOD;
else p2[y[i]].emplace_back(make_pair(x[i], v[i]));
}
while (m--)
{
int op;
FastIO::read(op);
if (op == 1)
{
int x;
FastIO::read(x);
if (p[x].size() <= B)
{
for (auto& [y, v] : p[x])
{
sum[y] = (sum[y] - v + MOD) % MOD;
v = (v * v) % MOD;
sum[y] = (sum[y] + v) % MOD;
}
}
else
{
tag[x] = (tag[x] << 1LL) % (MOD - 1LL);
}
}
else
{
int y;
FastIO::read(y);
long long ans = sum[y];
for (auto& [x, v] : p2[y])
{
ans = (ans + qpow(v, tag[x])) % MOD;
}
FastIO::writeln(ans);
}
}
return 0;
}
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现