2024夏中山集训第1周

news/2024/9/23 23:23:47/文章来源:https://www.cnblogs.com/cyyhcyyh/p/18330901

【NOIP模拟一】20240729

C

注意到答案是s除以区间gcd。
裴蜀定理推广

D


像这样建图,跑全源最短路。

在这张图上有 \(1\to 2\to 3\to 4\to 5\)\(7\to 8\to 9\to 3\ to 10\ to 11\) 两条路径。把路径上的点看作车上的点,每个点本身看作车站。
可以发现在车(一条路径)上的点可以选择是否停靠也就是执行了边权为 \(-dist + \max(0,h_i)\) 这一操作。而如果要换乘,即 \(2\to 3\to 10\) 这样的操作则不得不取 \(h_i\)
然后跑全源最短路,注意一些细节即可。(因为这道题有三角形不等式等奇葩性质,SPFA 是可以的)。具体建边操作可以看代码。

#include <bits/stdc++.h>
using namespace std;
#define il inline
#define ptc putchar
#define reg register
#define pb push_back
#define R(i, l, r) for (int i = l; i <= r; ++i)
#define debug puts("--------------------------------------------")
typedef long long ll;
typedef pair<int, int> PII;
namespace ZeroTwo {template <typename T>il void read(T &x) { x = 0; T f = 1; char ch;while (!isdigit(ch = getchar())) f -= (ch == '-') << 1;while (isdigit(ch)) x = (x << 1) + (x << 3) + (ch & 15), ch = getchar();x *= f;}template <typename T, typename ...L>il void read(T &x, L &...y) {read(x); read(y...);}template <typename T>il void write(T x) {if (x < 0) ptc('-'), x = -x;if (x > 9) write(x / 10);ptc(x % 10 + '0');}template <typename T, typename ...L>il void write(T &x, L &...y) {write(x), ptc(' '); write(y...);}
}
using namespace ZeroTwo;
#define int ll
const int N = 8005;
int n, m;
struct node {int x, y, v;
} a[2005];
ll calc(int i, int j) {ll s = 1ll * (a[i].x - a[j].x) * (a[i].x - a[j].x) + (a[i].y - a[j].y) * (a[i].y - a[j].y);return ceil(sqrt(s));
}
bool vis[N + 6000];
ll dis[N + 6000];
vector <pair <int, ll> > E[N + 6000];
int tot;
void SPFA(int s) {queue <int> q; q.push(s);R(i, 1, tot) vis[i] = 0, dis[i] = -1e15; vis[s] = 1; dis[s] = 0;while (q.size()) {int x = q.front(); q.pop();vis[x] = 0;for (auto [v, w] : E[x]) {if (dis[v] < dis[x] + w) {dis[v] = dis[x] + w;if (!vis[v]) {vis[v] = 1;q.push(v);}}}}
}
int idx[N][N];
int id(int i, int x) {if (!idx[i][x]) idx[i][x] = ++tot;return idx[i][x];
}
int b[N];
void add(int u, int v, int w) {E[u].push_back({v, w});
}
signed main() {freopen("metro.in", "r", stdin);freopen("metro.out", "w", stdout);read(n, m);R(i, 1, n) read(a[i].x, a[i].y, a[i].v);tot = n;R(t, 1, m) {int k; read(k);R(i, 1, k) read(b[i]);R(i, 1, k - 1) {int d = -calc(b[i], b[i + 1]);add(id(t, b[i]), b[i], a[b[i]].v);add(b[i], id(t, b[i + 1]), d);add(id(t, b[i]), id(t, b[i + 1]), d);}add(id(t, b[k]), b[k], a[b[k]].v);}R(i, 1, n) {SPFA(i);R(j, 1, n) printf("%lld ", dis[j] + a[i].v);ptc('\n');}return 0;
}

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

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

相关文章

关于多模块开发各级目录的用途

参考苍穹外卖 项目整体结构如下各层的用途序号 名称 说明1 sky-take-out maven父工程,统一管理依赖版本,聚合其他子模块2 sky-common 子模块,存放公共类,例如:工具类、常量类、异常类等3 sky-pojo 子模块,存放实体类、VO、DTO等4 sky-server 子模块,后端服务,存放配置文…

WPF实现一个错误信息栏

实现结果一,首先建立一个UserControl 前台代码如下:点击查看代码 <UserControl x:Class="实现一个错误信息栏.ErrorLog"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/x…

c语言中数据的格式化输出

001、输出整型数据,直接输出[root@PC1 test]# ls test.c [root@PC1 test]# cat test.c #include <stdio.h>int main(void) {printf("[%d]\n", 123);return 0; } [root@PC1 test]# gcc test.c -o kkk [root@PC1 test]# ls kkk test.c [root@PC1 test]# ./kkk …

电脑技巧 | 你想拥有这样的自定义工具栏命令按钮吗?QTTabBar帮助你实现!

【电脑技巧】第90期:你想拥有这样的自定义工具栏命令按钮吗?QTTabBar帮助你实现!

window系统使用Tomcat部署若依微服务

安装JAVA 下检查是否安装了JAVAjava -version提示"java: command not found"则表示没有安装,如果安装了会显示JAVA版本信息 CentOS安装JAVAsudo yum install java-11-openjdk-devel 安装完成再执行一下:java -version 说明安装成功,没问题 设置环境变量 设置JAVA_H…

暑假集训CSP提高模拟11

暑假集训CSP提高模拟11 组题人: @KafuuChinocpp\(T1\) P152. Fate \(24pts\)强化版: HDU1688 Sightseeing设 \(dis_{i,0/1}\) 表示从 \(s\) 到 \(i\) 的最短路/次短路长度, \(f_{i,0/1}\) 表示从 \(s\) 到 \(i\) 的最短路/次短路条数。\(dijkstra\) 过程中按照路径长度与最短…

7.29 调试及admin

为什么服务不能启动 go 模块支持 go程序启动过程编译完成之后会在制定目录底下生成一个同名文件, 而不是意向中的service文件 没有搞清楚run是什么的,可以直接运行的 go启动和退出 接口是底层的数据结构 接口的构造过程 反射类型 …

.NET 窗口/屏幕截图

图像采集源除了显示控件(上一篇《.NET 控件转图片》有介绍从界面控件转图片),更多的是窗口以及屏幕。 窗口截图最常用的方法是GDI,直接上Demo吧:1 private void GdiCaptureButton_OnClick(object sender, RoutedEventArgs e)2 {3 var bitmap …

400 Bad Request(错误请求)

400 Bad Request(错误请求):请求无效,服务器无法理解或处理请求。可能的原因包括参数错误、格式错误、缺少必需的字段或数据错误。问题不常见,大多服务器原因,虚拟主机用户联系空间商。 自己购买的服务器,需要寻求三方技术支持排查问题。扫码添加技术【解决问题】专注中…

单细胞转录组上游fasta文件处理

单细胞分析上游fasta文件处理 ——基于cellranger与dropseqRunner###如果测序文件由10X genomics平台产生,则采用cellranger count的基本流程进行fasta文件的上游处理;如果测序文件由dropseq平台产生,则采用dropseqRunner软件进行处理 一、cellranger配置 1、软件安装并查看…

帝国CMS网站忘记后台管理员帐号怎么办?

忘记后台管理员帐号怎么办?使用MySQL数据库管理软件phpmyadmin,查看phome_enewsuser表里的记录:查看username字段的内容。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、…

易优cms空间安装易优,如何去除URL中的index.php

普遍适用于百度云虚拟主机百度云bch云主机支持nginx原生态伪静态规则写法,请将规则写到/webroot/目录下的bcloud_nginx_user.conf文件中(没有则创建),重载站点生效。首先我们写一个bcloud_nginx_user.conf 文件,写入一下代码:location / { if (!-e $request_filename)…