当前位置: 首页 > news >正文

2026多校冲刺省选模拟赛5

2026多校冲刺省选模拟赛5

Link

A. 粉兔的冰红茶(icetea)

比较牛的题

设一颗完全二叉树的节点 \(x\) 以及他的左儿子 \(ls\) 和右儿子 \(rs\)\(f_a(x)\) 是以 \(x\) 为根当前位置放 \(a\) 的不和谐值的最小值。

则有 \(f_a(x) = f_b(ls) + f_c(rs) + (a - b)^2 + (a - c) ^ 2\) ,发现 \(f_a(x)\) 是一个二次函数的形式,可以线段树维护,然后就可以做了,据zxkqwq说十分卡常熟。

说说我的赛时唐诗做法。

手推了样例之后发现可以转化成 \((Sum_{rs} - Sum_{ls}) ^ 2\) 乘上一个系数,然后这个系数和层数有关。

然后考虑系数是多少。手推的前 \(4\) 项是 \(1, 2, 12, 44\)。实际上是假的。

然后放到OEIS上发现啥也没用。

赛后kinggojianofyue用打表程序打出了是 \(2^i \times (2^i - 1)\),然后可以轻松做。因为是完全二叉树,暴力的复杂度是对的。

还是贴一下代码吧。


signed main(){cin >> n >> q; int N = (1 << n) - 1;for(int i = (N + 1) >> 1; i <= N; ++i) cin >> a[i];for(int i = 1; i <= 100; ++i) f[i] = qpow(2, i - 1) * (qpow(2, i - 1) - 1) % mod; for(int i = 1; i <= 100; ++i) f[i] = qpow(f[i], mod - 2);for(int i = 1; i <= (N >> 1); ++i) c[i] = f[n - __lg(i)];for(int i = ((N + 1) >> 1) - 1; i >= 1; --i){a[i] = (a[i << 1] + a[i << 1 | 1]) % mod;ans += (a[i << 1] - a[i << 1 | 1]) * (a[i << 1] - a[i << 1 | 1]) % mod * c[i] % mod; ans %= mod; }cout << ans << '\n';while(q--){int p, hp; cin >> p >> hp;int now = p >> 1; while(now) ans = (ans - (a[now << 1] - a[now << 1 | 1]) * (a[now << 1] - a[now << 1 | 1]) % mod * c[now] % mod + mod) % mod, now >>= 1;  a[p] = hp; now = p >> 1;while(now){ans = (ans + (a[now << 1] - a[now << 1 | 1]) * (a[now << 1] - a[now << 1 | 1]) % mod * c[now] % mod) % mod;  a[now] = (a[now << 1] + a[now << 1 | 1]) % mod;now >>= 1;}         cout << ans << '\n';}return 0;
}

B. 粉兔的原神(genshin)

发现对于每个点只有 \(k\) 个点的 \(dist_{i,j}\) 是未知的。

考虑仅仅对这些点跑最短路,我们可以算出每对没有连边的点,求出他们之间的最小距离,这样边数很少,然后直接跑dij即可。

常数极大无比。

inline ll qpow(ll a, ll b){ll res = 1;while(b){if(b & 1) res = res * a % mod;a = a * a % mod, b >>= 1;}return res;
}
struct node{ll u, d;bool operator < (const node &a) const{return d > a.d;}
};
signed main(){freopen("genshin.in","r",stdin);freopen("genshin.out","w",stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> n >> B;for(int i = 1, k; i <= n; ++i){cin >> t[i] >> k, mp[{i, i}] = 1; id[i] = i;for(int j = 1, x; j <= k; ++j){cin >> x; mp[{i, x}] = 1; G[i].pb(x), q[x].emp(i), w.emp(x);}}sort(id + 1, id + 1 + n, [](int x, int y){ return t[x] < t[y];});for(int i = 1; i <= n; ++i){vector<int> vec;for(auto p : w){vector<int> tmp;for(int j : q[p]) if(!mp.count(mkp(id[i], p)) && !mp.count(mkp(j, id[i]))) val[{j, p}] = t[id[i]], tmp.pb(j);for(int j : tmp) q[p].erase(j);if(!q[p].size()) vec.pb(p);}for(int p : vec) w.erase(p);}pw[0] = 1; for(int i = 1; i <= n; i++) pw[i] =  pw[i - 1] * B % mod;for(int i = 2; i <= n; i++) (pw[i] += pw[i - 1]) %= mod;ll ans = 0;for(int i = 1; i <= n; ++i){ans = (ans + (t[i] * pw[n] % mod * qpow(B, (i - 1) * n) % mod + mod - t[i] * qpow(B, (i - 1) * n + i) % mod))% mod;priority_queue<node> q;int tot = 0;vector<ll> dis;dis.resize(G[i].size() + 1);for(int j : G[i]){d[j] = ++tot, (ans += (mod - t[i] * qpow(B, (i - 1) * n + j) % mod) % mod) %= mod, dis[tot] = inf;if(val[{i, j}]) q.push({j, val[{i, j}] + t[i]}), dis[d[j]] = val[{i, j}] + t[i];}while(!q.empty()){node u = q.top(); q.pop();if(u.d > dis[d[u.u]] || u.d >= inf)continue;for(int j : G[i])if((!mp.count(mkp(u.u,j))) && dis[d[u.u]] + t[u.u] < dis[d[j]])dis[d[j]] = dis[d[u.u]] + t[u.u], q.push({j, dis[d[j]]});}for(auto v : G[i])if(dis[d[v]] >= inf) (ans += V * qpow(B, (i - 1) * n + v) % mod) %= mod;else (ans += dis[d[v]] * qpow(B, (i - 1) * n + v) % mod) %= mod;}   cout << ans << '\n';return 0;
}

C. 粉兔的牛拉(ramen)

计算几何我不会,咕咕咕。

http://www.jsqmd.com/news/346948/

相关文章:

  • 为什么测试工程师更需要抗扰大脑?
  • P1429 学习笔记
  • OpenClaw+Sealos组合拳:我司的AI Agent开发效率直接翻了4倍
  • 资治通鉴-名言
  • python3.12报错:ModuleNotFoundError: No module named imp
  • ubuntu上nodejs的安装
  • 小程序开发实战:微信小程序云开发实现用户登录与数据存储
  • 别手动协调Agent了,OpenClaw的事件驱动调度让我少熬了20个夜
  • ue5 迁移 导出使用笔记
  • Spark自适应查询执行:智能优化大数据作业
  • 你能解释一下什么是JVM吗?它是如何工作的?
  • P4913 【深基16.例3】二叉树深度 dfs-二叉树的遍历
  • 未来5年IT人才需求前瞻?哪些方向爆发?哪些岗位会萎缩?程序员的职业规划重要吗?
  • 基于SpringBoot+Vue的智慧社区服务管理系统设计与实现
  • AI 这么火,.NET 开发者到底值不值得学?怎么学?
  • Trilium Demo
  • AI应用架构师经验谈:半导体研究智能体系统容错设计
  • 每日一题:中间件是如何工作的?
  • SpringDoc和Swagger运用
  • 多语言支持:构建国际化的AI Agent
  • 2-5
  • 如何兼顾极地考察与编码?科考开发者的时间术
  • 7个变态又好用的AI神器
  • ⚖️ OCSL v1.0 | 开放文化主权许可证 (Open Cultural Sovereignty License)
  • 从月薪6k到NASA外包:我的文昌航天城软件测试逆袭路
  • 2026太空安全危机:测试认证缺失的连锁反应
  • 脑机接口伦理师入门:哲学背景转型指南
  • Linux 下“彻底删除文件”这件事,到底该怎么做?
  • 元宇宙地产崩盘背后的技术真相:被忽视的测试致命伤
  • 芯片产业链平台界面设计及插画设计