尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

2025网络赛1 C、D

2025网络赛1 C、D
📅 发布时间:2026/6/19 7:02:15

C. Canvas Painting

贪心。

初始时画布上有 \(n\) 种颜色。每次操作最多可以减少一种颜色(通过改变一个位置的颜色,使其与另一个位置的颜色相同)。因此,问题转化为如何最大化有效操作次数(即减少颜色的次数),最终答案即为 \(n\) 减去有效操作次数。

将操作区间按左端点分组并排序。使用一个小顶堆维护当前可用的操作区间的右端点。

从左到右处理每个关键左端点之间的区间段,对于每个位置,检查是否有可用的操作,即左端点不超过当前位置且右端点不小于当前位置的操作。优先使用右端点最小的操作来覆盖当前位置,因为右端点小的操作适用范围有限,优先使用可避免浪费。

每成功使用一个操作,有效操作次数加一。

最终答案即为 \(n\) 减去有效操作次数。

#include <bits/stdc++.h>using namespace std;using i64 = long long;void solve() {int m, n;cin >> m >> n;map<int,vector<int>> mp;for (int i = 0; i < m; i += 1) {int l, r;cin >> l >> r;mp[l].push_back(r);}int ans = n;vector adj(mp.begin(), mp.end());priority_queue<int,vector<int>,greater<>> Q;for (int i = 0; i < (int)adj.size(); i += 1) {auto &[l ,ve] = adj[i];for (auto &r : ve) {Q.push(r);}int next = i + 1 == (int)adj.size() ? n : adj[i + 1].first;for (int j = l; j < next; j += 1) {while (!Q.empty() && Q.top() <= j) {Q.pop();}if (Q.empty()) {break;}ans -= 1;Q.pop();}}cout << ans << "\n";}
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int t;cin >> t;while (t--) {solve();}return 0;
}

D. Min-Max Tree

树形DP。

题意可以看成将树拆成若干条链,然后选哪些链即可,记链的两端为最大最小值,则链的方向为最大值到最小值的方向。

设 \(dp_{x,0/1/2}\) 表示 \(x\) 作为中间点,作为最大值向下传递,作为最小值向上传递。

\(x\) 作为中间点时,如果向上/向下的贡献为 \(0\) 时,此时也作为最小/最大值。

则有转移方程:

\[Sum = \sum_{v\in Sub_u}dp_{v,0} \]

\[up = \max(Sum,\max_{v\in Sub_u} (Sum-dp_{v,0}+dp_{v,1}+a_u-a_v)) \]

\[down = \max(Sum,\max_{v\in Sub_u}(Sum - dp_{v,0}+dp_{v,2}+a_v-a_u)) \]

\[dp_{x,0} = up + down - Sum,\ dp_{x,1}=down,\ dp_{x, 2} = up \]

#include <bits/stdc++.h>using namespace std;using i64 = long long;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin >> n;vector<int> a(n + 1);for (int i = 1; i <= n; i += 1) {cin >> a[i];}vector e(n + 1, vector<int>());for (int i = 1; i < n; i += 1) {int u, v;cin >> u >> v;e[u].push_back(v);e[v].push_back(u);}vector dp(n + 1,array<i64,3>());auto dfs = [&](auto &&self, int u, int fa)->void{i64 sum = 0;for (auto &v : e[u]) {if (v == fa) {continue;}self(self, v, u);sum += dp[v][0];}i64 up = sum, down = sum;for(auto &v : e[u]){if(v == fa) continue;up = max(up, sum - dp[v][0] + dp[v][2] + a[v] - a[u]);down = max(down, sum - dp[v][0] + dp[v][1] + a[u] - a[v]);}dp[u] = {up + down - sum, down, up};};dfs(dfs, 1, 0);cout << dp[1][0] << "\n";return 0;
}

相关新闻

  • 【URP】Unity Shader Tags
  • 存储器的性能指标 计算机组成原理第三章
  • idea gitee 更新已取消 解决方案

最新新闻

  • 合肥高新区 房屋修缮|维小达|墙面/吊顶/窗户/壁纸壁布/瓷砖美缝/石材修复全屋破损翻新一站式服务 - 维小达科技
  • 跑遍广州 7 家黄金回收店!实测总结普通人通用变现公式 + 避坑指南 - 奢侈品回收评测
  • okbiye 毕业论文专项 AI 写作:重构毕业撰文全链路,消解数万学子论文创作多层桎梏
  • 西安旧黄金回收靠谱渠道推荐|2026避坑保价完整版 - 奢侈品回收测评
  • Legacy iOS Kit终极指南:3步让你的旧iPhone/iPad重获新生
  • 热键侦探:3分钟快速定位Windows快捷键冲突的终极方案

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号