st表 + 变形的djs (好题

news/2025/10/5 18:41:50/文章来源:https://www.cnblogs.com/xtxm/p/19126881

st表 + 变形的djs (好题

https://codeforces.com/gym/105386/problem/J

#include <bits/stdc++.h>using i64 = long long;struct STList {int n, k;std::vector<std::vector<int>> Max;STList() {}STList(const std::vector<int>&a) {init(a);}void init(const std::vector<int>&a) {n = a.size();k = std::__lg(n) + 1;Max.assign(n, std::vector<int>(k));for (int i = 0; i < n; ++i) {Max[i][0] = a[i];}for (int j = 1; j < k; ++j) {for (int i = 0; i + (1 << j) <= n; ++i) Max[i][j] = std::max(Max[i][j - 1], Max[i + (1 << (j - 1))][j - 1]);}}int query(int l, int r) {int j = std::__lg(r - l + 1);return std::max(Max[l][j], Max[r - (1 << j) + 1][j]);}
};void Solve() {int n, m, K;std::cin >> n >> m >> K;std::vector<std::vector<std::array<int, 3>>> adj(n);for (int i = 0; i < m; ++i) {int x, y, c, l;std::cin >> x >> y >> c >> l;x--, y--, c--;adj[x].push_back({y, c, l});adj[y].push_back({x, c, l});}std::vector<std::vector<int>> pos(m), len(m);std::vector<int> L(K), col(K);for (int i = 0; i < K; ++i) {int c, l;std::cin >> c >> l;c--;pos[c].push_back(i);len[c].push_back(l);col[i] = c;L[i] = l;}std::vector<STList> f(m);for (int i = 0; i < m; ++i) {if (pos[i].size() == 0) {continue;}f[i].init(len[i]);}std::priority_queue<std::array<int, 3>, std::vector<std::array<int, 3>>, std::greater<>> q;q.push({0, 0, 0});std::vector<int> vis(n);while (!q.empty()) {auto [p, t, x] = q.top(); // ticket, remain distanceq.pop();if (vis[x]) {continue;}vis[x] = 1;// std::cerr << p << ' ' << t << ' ' << x << '\n';for (auto [y, c, l] : adj[x]) {// std::cerr << "y, c, l = " << y << ' ' << c << ' ' << l <<   '\n';if (pos[c].size() == 0) continue;if (c == col[p] && l <= L[p] - t) {q.push({p, t + l, y});continue;}auto it = std::upper_bound(pos[c].begin(), pos[c].end(), p) - pos[c].begin();if (it == pos[c].size()) {continue;}int v = it;int lo = it, hi = pos[c].size() - 1;if (f[c].query(lo, hi) < l) {continue;}// std::cerr << "binary search!\n";while (lo < hi) {int mid = (lo + hi) / 2;if (f[c].query(v, mid) >= l) {hi = mid;} else {lo = mid + 1;}}q.push({pos[c][lo], l, y});}}for (int i = 0; i < n; ++i) {std::cout << vis[i];}std::cout << '\n';
}int main() {std::ios_base::sync_with_stdio(false);std::cin.tie(nullptr);int t;std::cin >> t;for (int ti = 1; ti <= t; ++ti) {// std::cerr << "Solve : " << ti << '\n';Solve(); }return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.什么是node.js、npm、vue - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

科技园区建设网站的意义个人网站名字

【Rust】001-基础语法&#xff1a;变量声明及数据类型 文章目录 【Rust】001-基础语法&#xff1a;变量声明及数据类型一、概述1、学习起源2、依托课程 二、入门程序1、Hello World2、交互程序代码演示执行结果 3、继续上难度&#xff1a;访问链接并打印响应依赖代码执行命令 三…

网站建设的常见技术有哪些怎么查询在建工程

useMemo和useCallback的用法以及区别 useCallback 和 useMemo 是 React 中的两个钩子函数&#xff0c;它们的目标都是优化性能&#xff0c;但它们在用途和使用场景上有一些区别。 useCallback useCallback 用于缓存一个回调函数&#xff0c;并在依赖项发生变化时&#xff0c…

深圳网站设计是什么简单网站搭建

1.认识二分查找 二分查找的时间复杂度:O(logN) 二分查找属于算法中耳熟能详的一类&#xff0c;通常的我们会说只有数组有序才可以使用二分查找&#xff0c;不过这种说法并不完全正确&#xff0c;只要数据具有"二段性"就可以使用二分查找&#xff0c;即我们可以找出一…

在wpf .net 8项目中使用materialDesign 4 以上版本的的注意事项

在wpf .net 8项目中使用materialDesign 4 以上版本的的注意事项新建.net8 wpf项目 nuget添加MaterialDesignThemes引用,现在可以用5.2.1,注意:可以只有添加这个包即可,因为新nuget会自动依赖引用MaterialDesignCol…

李臻20242817_安全文件传输系统项目报告_第14周 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

一站多通怎么做网站饲料行业建设网站方案设计免费下载ppt

学习java之电脑的常用快捷键和DOS窗口下的常用命令电脑一些常用的快捷键win快捷键&#xff1a;单独按Windows&#xff1a;显示或隐藏 “开始”功能表WindowsBREAK&#xff1a;显示“系统属性” 对话框WindowsD&#xff1a;显示桌面或恢复桌面WindowsM&#xff1a;最小化所有窗口…

做网站套餐enjooy wordpress

本机文件夹同步到云服务器 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。本节操作介绍本地MacOS系统主机通过安装“Microsoft Rem…

长沙做网站 必看 磐石网络网店设计理念

随着我国人民精神文化与物质生活的不断升级&#xff0c;定制真人手办摆件的需求变得广泛&#xff0c;易模推出易模真人手办定制服务&#xff08;小程序&#xff09;&#xff0c;帮助市场合作伙伴能够以全线上、手机端形式为用户制作真人手办&#xff0c;“全线上”的内涵包括手…

洛谷P14120 题解 - lemon

思维路径 容易注意到,这个赛制对于 BaoBao 非常不友好,因为 DreamGrid 可以通过他出的牌来决定自己的出牌。也就是说,我们不需要关注 BaoBao 的出牌顺序,只需要关注他出的每一张牌对应 DreamGrid 出的牌即可。 对于…

通州网站建设服务做网站建设销售

主要实现的那种光晕效果&#xff1a;中间亮&#xff0c;四周逐渐变淡的。 这边有三种发光效果&#xff0c;先上效果图。 第一种、圆形发光体 实现代码&#xff1a;新建shape_light.xml&#xff0c;导入以下代码。使用时&#xff0c;直接给view设置为background。 <?xml …

请网站制作公司费用网站制作与网站建设pdf

Navicat创建数据库表 、导入sql文件&#xff0c;生成表结构 1.打开Navicat2.远程连接mysql连接3.创建数据库4.导入sql文件5.生成表结构 1.打开Navicat 2.远程连接mysql连接 3.创建数据库 4.导入sql文件 导入源代码中的sql文件 5.生成表结构

33 ACwing 294 Count The Repetitions 题解

Count The Repetitions 题面 定义 conn(s,n) 为 n 个字符串 s 首尾相接形成的字符串,例如: conn(“abc”,2)=”abcabc” 称字符串 a 能由字符串 b 生成,当且仅当 a 为 b 的子序列。 例如 abdbec 可以生成 abc,但是…

南沙做网站公司中国百强县市榜单

windows使用redis 安装和配置 下载安装方式一-使用压缩包安装解压到指定的文件Redis安装为Windows服务安装成功 方式二-MSI安装包安装完成 Redis配置远程访问1.修改配置文件redis.windows.conf2.修改完redis配置文件&#xff0c;必须重启redis 下载 先下载Redis for windows 的…

北京天通苑网站建设做网站公司报价

这是树的第10篇算法&#xff0c;力扣链接。 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], po…

电赛电装实习总结

电赛电装实习总结电赛最致命的问题是验收时仪器没有调好,可能是输入阻抗的问题,导致指标全部不对,最好还是拿自己做的时候用的仪器。 很多实验室仪器落灰,不常用的仪器大多是有问题的,用之前一定要矫正,没有验证…

量化投资 —— 实践 (续)

量化投资 —— 实践 (续)地址: https://item.taobao.com/item.htm?id=935049768542&pisk=gzwtYk13ZwbgtBLwXrfhnbarSWsHk6qZpPrWnq0MGyULcPgiocgXOXi-XmijcoijHyacbVqf7rexRAG4sq0ikxE4yMblETqabxkCraXu8SKU6Y…

30 ACwing 291 蒙德里安的梦想 题解

蒙德里安的梦想 题面 求把 \(N \times M\) 的棋盘分割成若干个 \(1 \times 2\) 的长方形,有多少种方案 例如当 \(N = 2, M = 4\) 时,共有 5 中方案。当 \(N = 2, M = 3\) 时,共有 3 种方案\(1 \le N, M \le 11\) 题…

21 ACwing 289 环路运输 题解

环路运输 题面 在一条环形公路旁均匀地分布着 N 座仓库,编号为 1∼N,编号为 i 的仓库与编号为 j 的仓库之间的距离定义为 \(dist(i,j)=min(|i−j|,N−|i−j|)\),也就是逆时针或顺时针从 i 到 j 中较近的一种。 每座…