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

D. Skipping 【 Codeforces Round 980 (Div. 2)】

D. Skipping

在这里插入图片描述

思路:

注意到最佳策略是先往右跳转到某处,然后按顺序从右往左把没有遇到过的题目全部提交。
将从 i i i跳转到 b [ i ] b[i] b[i]视为通过边权(代价)为 a [ i ] a[i] a[i]的路径,而向左的路径边权都是 0 0 0;目的是找到到从出发点到每个点 i i i的最短路径(最小代价) d [ i ] d[i] d[i],用Dijkstra跑一遍即可。
得分即为前缀和 p r e [ i ] pre[i] pre[i]-代价 d [ i ] d[i] d[i],将 i i i 1 1 1遍历到 n n n,取 m a x max max即为最终答案。

代码:

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define pb push_back
#define pii pair<int,int>
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
typedef long long ll;
using namespace std;void solve() {int n;cin >> n;int a[n + 1];for (int i = 1; i <= n; i++) {cin >> a[i];}vector<vector<pii>> lj(n + 1);for (int i = 1; i <= n; i++) {int b;cin >> b;lj[i].push_back({a[i], b});if (i != 1) lj[i].push_back({0, i - 1});}vector<bool> vis(n + 1, false);vector<int> d(n + 1, 1e15);priority_queue<pii, vector<pii>, greater<pii>> pq;pq.push({0, 1});d[1] = 0;while (!pq.empty()) {pii top = pq.top();pq.pop();int td = top.first;int tg = top.second;if (vis[tg])continue;vis[tg] = true;for (pii e : lj[tg]) {int ng = e.second;int nd = e.first;if (d[ng] > td + nd) {d[ng] = td + nd;pq.push({td + nd, ng});}}}int sum = 0, ans = 0;for (int i = 1; i <= n; i++) {sum += a[i];ans = max(ans, sum - d[i]);}cout << ans << endl;
}signed main() {cin.tie(0)->ios::sync_with_stdio(0);int T = 1;cin >> T;while (T--) {solve();}return 0;
}

http://www.mrgr.cn/news/59701.html

相关文章:

  • Suno 歌曲生成 API 对接说明
  • 数据结构:利用队列的基本操作,模拟病人到医院排队看病过程。
  • 如何使用 Python 操作数据库
  • 5.15 加载内核映像文件(1)
  • shodan2:绕过shodan高级会员限制+metasploit批量验证漏洞
  • Unity - UGUI动静分离
  • 用Pycharm 运行深度学习,在测试(推理)运行测试文件会自动进入pytest模式,如何关闭默认测试框架
  • LVGL _基础控件_Label 文本
  • 《C++显式类型转换:解析多种转换方式的奥秘》
  • Docker | images镜像的常用命令总结
  • AI提示词工程优化Prompt-GPT使用手册(科普一键收藏史上最强攻略)
  • 【jvm】新生代和老年代
  • 【anki】如何图片遮挡分组
  • 数学建模学习(131):使用Python基于VIKOR算法的多准则决策分析
  • 【原创】红米K40(alioth)解锁BL,安装Magisk获取root权限并安装LSPosed模块
  • 实时操作系统(RTOS)深度解析及Java实现初探
  • windows@快速安装windows系统镜像安装@快速部署windows操作系统
  • Python爬虫-汽车投诉排行榜单数据
  • DiffusionDet: Diffusion Model for Object Detection—用于对象检测的扩散模型论文解析
  • 三菱FX5UPLC 安全功能
  • ‌AI智能批量撰写文章,轻松通过AI检测,站长内容更新必备神器
  • C++学习路线(二十六)
  • ctfshow web入门 web161-165
  • ElasticSearch备考 -- index rollover
  • JAVA模仿银行系统要求
  • redis内存打满了怎么办?