upc-Environment-Friendly Travel(分层图最短路)

A - Environment-Friendly Travel Gym - 102501A (前向星建图+二维迪杰斯特拉算法) 题目链接 题意: 给定起点(xs,ys), 终点(xd,yd), 最大旅程距离B 汽车的每公里代价C0 其余交通方式数量T<=100 其余交通方式代价[C1…CT]<=100 车站数量N<=1000 第i个车站的位置(xi,yi),边数li<=100,每条边(j,mj)表示连向第j个车站,交通方式为mj 可以开车从s到任一车站或目的地,从任一车站开车到目的地,但是车站间不得开车 问在旅程B内的最小代价 简化:无向图,起点s,终点t,边(u,v,a,b),要求s->t的路径边权b 阅读详情

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

题意

给你起点终点坐标,再给你最大的行走距离 b ,再给你私人汽车的排放量 c0(从起点到车站,从车站到终点都是坐私人汽车),然后再给你 t 种交通方式的排放量,最后给你 n 个车站的坐标,以及每个车站 i 可以通过 某种交通方式 m 到达车站 j .最后让你求能在行走距离不超过 b 的情况下,从起点到终点的最小排放量,如果到不了输出 -1。

思路

对于最大的行走距离 b 是一个很小的值,我们可以设 dis [ i ] [ j ] 为当前走到 x 节点,总行走距离为 j 的最小排放量.,跑一遍最短路,在 dis [ n + 1] [ i ] ( 0<=i<=b) 中取最小值就是答案
(训练的时候刘爷跟我说这个题我做过(类似的),当时我就懵了,然后我忽然就想起来,我跟着潘学长做过,但是当时没做出来,后来让我补题来着,但是当时我没有立刻补题,结果,,,我就给忘记了/(ㄒoㄒ)/~~,亏了鑫爷还写了博客,唉,这波又辜负学长们的关心了 ,可能这也是我被ybl大佬拉开的原因吧,以后要及时补题了,要不可能真的就凉凉了/(ㄒoㄒ)/~)

代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<queue>
#include<cstring>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=1e6+10;
const int mod=1e6+10;
int xs,xd,ys,yd,b,c0,t,n,l,cnt;
int c[1010],head[maxn],dis[1010][110];
bool vis[1010][110];
struct node
{
    int w;
    int to;
    int next;
}edge[maxn];
struct Node
{
    int id;
    int co2;
    int diss;
    friend bool operator < (const Node &a,const Node &b)
    //重载小于号使得小的先出队列  
    {
        if(a.co2==b.co2) return a.diss>b.diss;
        else return a.co2>b.co2;
    }
    //如果a.co2>b.co2成立,那么结构体Node a < Node b成立。
    //由于优先队列是按照从大到小排列,所以结构体b会排列到a之前,b先出
    //这里注释是因为我之前一直搞不懂关于对优先队列运算符的重载
    //正好借这个题好好理解一下o(╥﹏╥)o 
    Node(){}
    Node(int a,int b,int c)
    {
        id=a,co2=b,diss=c;
    }
};
pair<int,int>p[maxn];
void add(int u,int v,int w)
{
    edge[cnt].w=w;
    edge[cnt].to=v;
    edge[cnt].next=head[u];
    head[u]=cnt++;
}
void init()
{
    memset(head,-1,sizeof(head));
    memset(vis,0,sizeof(vis));
    memset(dis,INF,sizeof(dis));
    cnt=0;
}
int getdis(int a,int b)
{
    int x=p[a].first-p[b].first;
    int y=p[a].second-p[b].second;
    return ceil(sqrt(x*x+y*y));
}
void dijkstra()
{
    priority_queue<Node>q;
    dis[0][0]=0;q.push(Node(0,0,0)); 
    while(q.size())
    {
        int now=q.top().id;
        int ds=q.top().diss;
        q.pop();
        if(vis[now][ds]) continue;
        vis[now][ds]=1;
        for(int i=head[now];i!=-1;i=edge[i].next)
        {
            int v=edge[i].to;
            int diss=getdis(now,v);
            int co2=diss*c[edge[i].w];
            if(diss+ds>b) continue;//小优化 
            if(dis[v][diss+ds]>co2+dis[now][ds])
            { 
                dis[v][diss+ds]=co2+dis[now][ds];
                q.push(Node(v,dis[v][diss+ds],diss+ds));
            }
        } 
    }
}
int main()
{
    ios::sync_with_stdio(false);
    init();
    cin>>xs>>ys>>xd>>yd>>b>>c0>>t;
    c[0]=c0;
    for(int i=1;i<=t;i++) cin>>c[i];
    cin>>n;
    p[0].first=xs,p[0].second=ys;
    p[n+1].first=xd,p[n+1].second=yd;
    add(0,n+1,0);//起点终点建边 
    add(n+1,0,0);
    for(int i=1;i<=n;i++) 
    {
        cin>>p[i].first>>p[i].second;
        add(0,i,0),add(i,0,0);//起点与车站建边 
        add(n+1,i,0),add(i,n+1,0);//终点与车站建边 
        cin>>l;
        for(int j=1;j<=l;j++)
        {
            int id,m;
            cin>>id>>m;
            add(i,id+1,m);  
            add(id+1,i,m);
        }
    }
    dijkstra();
    int ans=INF;
    for(int i=0;i<=b;i++)
        ans=min(ans,dis[n+1][i]);
    if(ans==INF) cout<<"-1"<<endl;
    else cout<<ans<<endl;
    return 0;
}
【解题总结】SWERC 2019(Codeforces Gym 102501) 我解决的:B(1 WA)、I、J、A(3 WA)、D(1 WA,1 TLE)。 没看的:无。 旁观的:C、F、K、G、H。 看了但没做出来的:E、L。 I Rats 简单题,略。 B Biodiversity 简单题,略。 C Ants 简单题,略。 A Environment-Friendly Travel 最短路,略。本来应该一次过的题目,但写错了好几个地方,简直丢人。 F Icebergs 题意:给定几个简单多边形,计算其面积的和。 计算几何模板题,丢人的在于我还不会写(板子也没带)。 D Gnalc 阅读详情

相关推荐

python 抖音采集_python爬取抖音视频的实例详解

import requestsimport jsonimport reimport osfrom pprint import pprint as ppimport queueclass DouYin:header = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*...

weixin_35795675的博客 1864

A - Environment-Friendly Travel(二维最短路)

Question 求在路径长度小于等于限制长度前提下起点到终点的最小花费。 Solution 建图什么的都比较常规,路径长度小于100,求最小花费那就以花费为权跑最短路,剩下的信息当做状态处理好了<node,dist>,注意只保留合法状态(当前距离小于路径长度),跑dijkstra。 场上没出是输在对状态的维护上了,dijkstra本质上也是优秀在对同状态对外处理的唯一性上,原来那个写法确实不太能体现这种思想。 Code #include <iostream> #includ

gyp0205的博客 410

分析国外几款主流蜜罐产品看欺骗诱捕技术的应用脉络

网络安全的本质是攻防对抗,更本质的其实是人与人心智与技术的全面较量。 欺骗诱捕技术作为攻防对抗技术中比较特殊的技术,能够使防守方更多掌握对抗中的主动权,诱导攻击,迫使攻击者耗费精力的同时,留下丰富的攻击信息。究其本质,欺骗诱捕技术更深层次考验的不止是技术的能力,还有对于攻击者作为人的理解。 国外主流蜜罐产品分析 根据MarketsandMarkets《欺骗技术市场规模、份额和2021年全球市场预测》中提到的欺骗诱捕技术全球主要供应商及产品,我们分析了几款国外主流的蜜罐产品,希望更清晰看到欺骗诱捕技术应

cdyunaq的博客 1306

Environment-Friendly Travel ( 二维dijkstra)

传送门 这道题题意就不说了,主要是有一个二维数组进行 visvisvis 标记,因为该段路程的长度上限 BBB 仅仅只是100,所以完全可以用数组标记 dijkstradijkstradijkstra 的优先队列排序是先二氧化碳排放量,再进行长度,vis[point][length]vis[point][length]vis[point][length] 表示在点 vvv 长度为 lenlenlen 的已经访问过了,直接跳过这个情况,剩下的就按部就班的 dijkstradijkstradijkstra #

bloom_er的博客 491

飞牛fnOS安装1Panel后Docker容器消失?三步教你恢复数据并避免踩坑

本文详细解析了飞牛fnOS安装1Panel后Docker容器消失的问题,指出这是由于daemon.json文件被覆盖导致。通过SSH连接、修复配置文件和系统重启三个步骤,用户可以轻松恢复数据。文章还提供了预防措施和最佳实践,帮助用户避免类似问题。

yellow的专栏 869

Ollama模型路径迁移实战:Windows/Mac/Linux三平台保姆级教程(附常见问题排查)

本文提供了一份详细的Ollama模型路径迁移教程,涵盖Windows、macOS和Linux三大平台。通过设置OLLAMA_MODELS环境变量或创建符号链接,指导用户将模型从默认路径安全迁移至新位置,以释放系统盘空间或提升性能。教程包含迁移前的准备、分平台步骤、迁移后的验证以及常见问题排查,确保迁移过程平滑可靠。

js777的博客 1184

A - Environment-Friendly Travel Gym102501(二维最短路)

题意: 2维平面上,要从起点到终点,中间有n个站台,站台之间有边。两点距离为欧几里得距离。每个边可以坐不同交通工具对应不同碳排放量。 求起点到终点距离不超过B且碳排放量最小的路径 思路: 二维dijkstra,定义d[i][j]d[i][j]d[i][j]为到了第iii个点距离为jjj时的最低碳排放量。 #include <iostream> #include <vector> #include <algorithm> #include <cstring> .

tomjobs的博客 1196

双屏DPI缩放问题全解析:从原理到实战解决窗口大小突变

DPI(每英寸点数)缩放是现代操作系统在多显示器环境下实现界面适配的核心技术。其原理是通过虚拟分辨率映射,在不同物理像素密度的屏幕上维持一致的视觉尺寸。这项技术的价值在于解决了高分辨率屏幕显示内容过小的问题,保障了跨屏工作流的视觉连续性。然而,在混合DPI环境(如4K屏与1080p屏组合)中,显卡驱动逻辑与应用程序DPI感知的协同问题,常导致窗口跨屏时出现剧烈缩放、尺寸错乱。这直接影响多屏办公、设计协作等需要频繁拖拽窗口的应用场景。本文聚焦于**显卡驱动**配置与**应用程序兼容性**设置,提供一套从系统底

weixin_34364071的博客 386

Gym 102501A Environment-Friendly Travel (二维dijkstra)

题意:平面上,要从起点到终点,中间有n个站台,站台之间有边。两点距离为欧几里得距离。每个边可以坐不同交通工具对应不同碳排放量。求起点到终点距离不超过B且碳排放量最小的路径。 题解:二维dijkstra 由于存在限制条件B,我们可以将d数组改为二维。 d[i][j]d[i][j]d[i][j]:0点到 i 点的最小碳排放,且距离为 j 。 然后正常建边跑dijkstra即可。 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include&l

gongyuandaye的博客 441

基于航位推算与多传感器融合的高精度避障小车设计

航位推算(Dead Reckoning)是一种在无外部定位信号下通过里程计与惯性测量单元(IMU)持续积分估计位姿的基础导航方法,其核心在于运动学建模、误差累积抑制与多源数据融合。该技术具备低依赖、高实时、强确定性等工程优势,广泛应用于服务机器人、AGV、竞赛无人平台等受限环境下的自主导航系统。结合编码器高分辨率测距与九轴IMU姿态解算,可显著抑制纯里程计漂移,提升短时定位精度至厘米级。本文以全国大学生电子设计竞赛K题为背景,深入实现了一种面向确定性场地的离线建图+航位推算双模协同架构,重点解决嵌入式资源约

weixin_36328210的博客 81

SXU-软件项目管理-朱少民-第九章 项目监控与控制 第十章 项目收尾 附相关习题

软件项目管理-朱少民-第九章 项目监控与控制 附相关习题

weixin_63597914的博客 1488

Gym 102501 F Icebergs —— 贪心

This way 题意: 有s种动物,T种交换可能,就是说两个动物如果相邻并且他们有交换可能,你就可以交换这两种动物,最后是N只动物,让你在不违反交换可能的前提下使得他们最终排列的字典序最小。 题解: 这道题不错啊,我没有想对,也没时间敲了。 对于没有交换可能的两只动物来说,它们的先后顺序一定不会变。那么Q[i]队列就表示第i种动物有多少中断,也就是有多少不可交换的位置。那么我们枚举答案的位置,那...

天翼之城的博客 781

筹码峰五句口诀,看懂主力的秘密动作!(附实战图示)

筹码图的价值在于,它不像K线那样容易造假。主力可以骗线,但骗不了筹码分布。主力在不在;是吸筹还是出货;接下来是变盘还是震荡。这五句口诀可以说是“筹码阅读的入门圣经”:单峰坚挺变盘在即,双峰对垒高抛低吸;上峰不移主力在跑,多峰林立行情不止;下峰不移不离不弃,筹码识庄稳中取利!📌市场从来不是靠猜,而是靠看清。筹码,就是主力最真实的痕迹。如果你想学会提前布局、跟庄不被甩,学会看筹码峰——这一步必须打牢!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1162

Imprecise Computer - ( 思维 / 递推 )

题目描述 The Imprecise Computer (IC) is a computer with some structural issue that it can compare two integers correctly only when their difference is at least two. For example, IC can always correctly answer ‘4 is larger than 2’, but it can answer either ‘2 i

Cosmic_Tree的博客 1528

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Going Home - ( 抽屉原理 )

题目链接:点击进入 题目 题意 给一个长度为 n 的数组,问是否存在 x , y , z , w ( 四个数互不相同 ) ,满足 a [ x ] + a [ y ] = a [ z ] + a [ w ] ; 思路 暴力枚举 x 与 y ,得出和值 C ,2 <= C <= 5e6。 有 n ^ 2 对( x , y ),和值 C 大约有 5e6 种取值,当 n ^ 2 > 5e6 时,根据抽屉原理,必有一个和值对应两个以上的( x , y )对,但是,此时可能对应的( x , y )

Cosmic_Tree的博客 1407

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ABC Conjecture(大数分解)-2020ccpc(威海)

题意 给你一个范围是 [ 1 , 10 ^ ​18​​ ] 的数,让你求这个数能不能被一个 素数的平方 整除(即 c % ( i * i ) == 0) 思路1 用大数分解模板,将 c 分解得到 c 的所有质因子,然后去重(模板得到的是无序且没去重的),然后将所有质因子相乘,得到 tmp , 如果 tmp 跟 c 相等,说明 c 不能被素数的平方整除,否则可以。 (记得特判 c == 1 的情况!!! c = 1 是 “ no ” ) 代码1 #include<iostream> #incl..

Cosmic_Tree的博客 1335

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

A Golden Spirit (思维)-2020ccpc(威海)

题意 一座桥,桥两侧各有 n 个人,每个人都想去桥对面休息 x 分钟后再返回(必须休息够 x 分钟才能被背回去),问你满足所有人的愿望,最少需要多少分钟(你背一个老人过一次桥需要 t 分钟) 思路 最优的办法是(前 2 n 次)每一次过桥先背一个人去对面休息,等到所有(2 n个)人都到了(相对于自己一开始的位置的)桥对面,然后,这时候自己应该在自己最开始的位置,而此时每个人的休息所剩时间应该是: x x-2t x-4t … x-2*(n-1)t | x-t x-3t x-..

Cosmic_Tree的博客 1054

Gym - 103069B - Rectangle Flip 2( 暴力 + 思维 )

题目链接:点击进入 题目 题意 n * m 的网格,每秒删除其中一个小网格,问每秒后,还剩余多少个好的矩形 ( 只要是矩形,同时矩形内没有被删除的格子 ) 思路 蚌埠住啦,这题因为万恶的javaweb被我搁置了好久,我老早就想写了,难受≧ ﹏ ≦ 按照顺序删除点,对于每个删除的点,看会影响多少新矩形。思考一下(脑袋里构一下图),一个新删除的点,能影响到的,只能是以这个点x为中轴,上下每行左右扩到最大的部分(最大就是指碰到被删除的点,或者边界),这个上下每行也是在x轴上上下扩到最大的。我们若是确定每行能扩

Cosmic_Tree的博客 834

The number of steps(概率dp问题)

题目描述 Mary stands in a strange maze, the maze looks like a triangle(the first layer have one room,the second layer have two rooms,the third layer have three rooms …). Now she stands at the top point(the first layer), and the KEY of this maze is in the lowes

Cosmic_Tree的博客 805

Clock Master(分组背包)-2020ccpc(威海)

题意: T 组样例,每组给一个 n ,范围是 [ 1 , 30000 ] ,要求将 n 分解成: n = a1 + a2 + … + am ( m 没有限制 ),使得(a1 + a2 + … + am)的最小公倍数最大,输出这个最大值的对数。 思路: 将题目转换一下,就变成了将n分解,分解成 使得 尽可能的大。同时答案是要求输出这个最大值的对数,这个式子又转换为 有 k 种(组)素数,每种(组)素数只能选择一个幂次( p ^ ( ei )) ,第i个数的容量是 p ^ ( ei ),价值是log (.

Cosmic_Tree的博客 799

Chat Group -( 组合数 + 乘法逆元 )

题目链接:点击进入 题目 题意 n 个人, >= k 人就可以组成一个小组,问能组成多少个小组 思路 答案 = c ( n , k ) + … + c ( n , n ) = 2 ^ n - ( c ( n , 0 ) + … + c ( n , k - 1 ) ) c ( n , i ) = c ( n , i - 1 ) * ( n - i + 1 ) / i i 的逆元: 1 / i = i ^ ( mod - 2 ) 代码 #include<iostream> #includ

Cosmic_Tree的博客 693

HDU - 5256-序列变换(求最长严格递增子序列)

题目连接:点击进入 题意 一个数列,要求修改数量最少的元素,使得这个数列严格递增。其中无论是修改前还是修改后,每个元素都必须是整数。输出最少需要修改多少个元素。 思路 求最长的严格递增子序列 (O ( N ^ 2 ) 会 T , 所以用 O( N lg N)的 - - 二分查找) 这里解释一下对于初始的序列 a [ i ] 的偏移(也就是令 a [ i ] = a [ i ] - i) 因为严格递增要满足 a [ i ] - a [ j ] >= i - j , 即 a [ i ] - i >=

Cosmic_Tree的博客 657

What Goes Up Must Come Down(树状数组求逆序对)

题意 给你一个长度为n的数字序列,你每次可以交换任意两个相邻的数字,让你求出达到目标序列(前面不递减,后面不递增) 思路

Cosmic_Tree的博客 644

L3-011 直捣黄龙(最短路+dfs路径回溯)

题目链接:点击进入 思路 最短路+dfs路径回溯,不难,但是我被卡了,没看出来最短距离相等时,路径数应该是两者相加(我记得我之前做这类的题目的时候也是这里被卡,我真是猪脑子(* ̄(oo) ̄))。。。写博客纪念一下o(╥﹏╥)o 代码 #include<iostream> #include<cstring> #include<queue> #include<map> #include<cstdio> #define pii pair<int,i

Cosmic_Tree的博客 620

Gym - 102483G Game Design( 思维 + 模拟 )

题目链接:点击进入 题目 题意 思路 代码 #include<bits/stdc++.h> #define pii pair<int,int> using namespace std; const int maxn=1e6+10; const int base=1001; int pos[maxn]; string s; vector<pii>v; void print(int x,int y) { cout<<(-x)<<" "<&

Cosmic_Tree的博客 600

2021年度训练联盟热身训练赛第一场-G Birthday Paradox ( 数学 )

题目链接: 题目 题意 m个人,n组生日(可能这一天就一个人过生日,也可能多个人过生日),一年365天,问给定的这种情况的概率 思路 设m是总人数,那么总的情况数是 符合题意的情况数: 1、选出的n天生日的情况数, 2、m人分成n组的情况数(排除组内重复) 3、n个日期与n个组一一对应的情况数 综上: 答案为 然后取对数() ...

Cosmic_Tree的博客 593
上一篇: Codeforces Round #681 A--C
下一篇: HDU - 5256-序列变换(求最长严格递增子序列)
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值