首页 > 其他分享 >2024夏中山集训第1周

2024夏中山集训第1周

时间:2024-07-29 19:39:19浏览次数:7  
标签:vis int void 2024 read 中山 define 集训 dis

【NOIP模拟一】20240729

比赛有点唐,C 没开 ll 挂50,D挂了一点部分分。

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;
}

标签:vis,int,void,2024,read,中山,define,集训,dis
From: https://www.cnblogs.com/cyyhcyyh/p/18330901

相关文章

  • 2024年必备技能:小红书笔记评论自动采集,零基础也能学会的方法
    摘要:面对信息爆炸的2024年,小红书作为热门社交平台,其笔记评论成为市场洞察的金矿。本文将手把手教你,即便编程零基础,也能轻松学会利用Python自动化采集小红书笔记评论,解锁营销新策略,提升个人竞争力。一、引言:为什么选择小红书数据采集?在小红书这片内容营销的热土上,笔记评论蕴......
  • 暑假集训CSP提高模拟11
    A.Fate求次短路方案数.这题有点小水了,好像之前做过.具体的方案显然是DP,考虑枚举当前每一个路径长度,假如比最短路更优则覆盖最短路,之前的最短路用来覆盖次短路.否则如果比次短路更优,则直接覆盖次短路.方案数的话考虑一样的方法维护,只是在遇到相等的路径长时使方案数加一即可.......
  • 2024“钉耙编程”中国大学生算法设计超级联赛(4)
    Preface最唐氏的一集,有人写03一直过不去红温了然后白兰了一整场,怎么回事呢最后很可惜06因为多维数组调用时顺序出了点问题,导致cache爆了然后常数太大TLE了,但凡时间延长1min都改完过了由于今天过的题少就只写过了的六个题,剩下时间还要写昨晚CF的博客最优K子段......
  • 2024最新梦想贩卖机,变现宝知识付费小程序(修改版本+前后端)
    梦想贩卖机升级版,变现宝吸取了资源变现类产品的很多优点,摒弃了那些无关紧要的东西,使本产品在运营和变现能力上,实现了质的超越。多领域素材资源知识变现营销裂变独立版。实现流量互导,多渠道变现。独立部署,可绑自有独立域名不限制域网盘下载链接:https://blog.zibovip.top/?p=1......
  • 暑假集训CSP提高模拟11
    暑假集训CSP提高模拟11组题人:@KafuuChinocpp\(T1\)P152.Fate\(24pts\)强化版:HDU1688Sightseeing设\(dis_{i,0/1}\)表示从\(s\)到\(i\)的最短路/次短路长度,\(f_{i,0/1}\)表示从\(s\)到\(i\)的最短路/次短路条数。\(dijkstra\)过程中按照路径长度与......
  • 『模拟赛』暑假集训CSP提高模拟11
    Rank昨天积攒的rp生效了!A.Fate签到题。次短路计数,感觉做过类似的,不过这里次短路定义为最短路长度+1,赛时把自环想成环了,原谅我犯唐。还是用dijkstra,我们这次开两个dis数组存最短路和次短路长度,然后两个cnt数组存二者的个数,稍微想想就能想到一共的四种可能:更新后......
  • Adobe2024全家桶免费安装包下载路径+方法教程
    Adobe发布了其全家桶的最新版本Adobe2024。Adobe全家桶是一组由AdobeSystems开发和发行的图形设计、影像编辑与网络开发的软件产品套装,包括图像编辑软件Photoshop、矢量图形设计软件Illustrator等多款知名软件。Adobe全家桶的更新不仅意味着新功能的增加和性能的提升,也预示着......
  • Adobe2024全家桶下载+详细安装教程
    “我电脑里安装了20多个Adobe软件,但真正用到的只有PS。”近日,有网友在社交平台发帖称,自己的电脑里安装了大量Adobe软件,但实际上只经常使用Photoshop。对此,有其他网友回复道:“你这是买椟还珠,Adobe全家桶里有很多宝藏工具,比如AE、PR、AU等。”Adobe全家桶永久免费领取入口:http......
  • 华为OD笔试机试 - 园区参观路径 (Java 2024年C卷D卷真题算法)
    华为OD机试(C卷+D卷)2024真题目录(Java&c++&python)题目描述园区某部门举办了FamilyDay,邀请员工及其家属参加;将公司园区视为一个矩形,起始园区设置在左上角,终点园区设置在右下角;家属参观园区时,只能向右和向下园区前进,求从起始园区到终点园区会有多少条不同的参观路径......
  • 华为OD笔试机试真题算法 - 密码解密 (Java 2024年C卷D卷)
    华为OD机试(C卷+D卷)2024真题目录(Java&c++&python)题目描述给定一段“密文”字符串s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。映射的规则(‘a’~‘i’)分别用(‘1’~‘9’)表示;(‘j’~‘z’)分别用(“10*”~“26*”)表示。约束:映射始终唯一。......