Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) Toy Train 【贪心】

Diffusion Models扩散模型与深度学习(数学原理和代码解读) ​ 此前GANs霸占各大顶会很多年,DDPM的出现让人耳目一新!经过这两年的发展,Diffusion Models能在图像生成、超分辨率重建、点云生成、语音生成等领域达到SOTA。这篇文章旨在帮助没有了解过的读者入门,《Diffusion Models与深度学习专栏》已经写了将近三十篇文章,既有原理公式和必备基础知识的讲解,也有代码详细实战解读,还有前沿热门应用,欢迎读者订阅。 阅读详情

题目链接:http://codeforces.com/contest/1130/problem/D2

贪心的策略还算比较容易找的,但是会比较难写。

贪心策略是每次都取离当前车站最远的一颗糖,这样能多经过几个车站多取几颗糖,省时间。

但是写起来特别麻烦。

但是如果你能把这道题的问题写成一个公式,那么会简单很多。

假设5个车站,只有一个车站有3颗糖,并且这3颗糖都不是当前车站的。这个时候我们能做的只能是在这个车站取一颗糖送到目的地,然后再倒回来取第二颗,直到所有的糖都送完,那么这个时候的花费是多少?

首先是第一颗糖,即使这个糖的目的地是下一个站,花费的时间是1,但是因为还有糖果没送完,所以我仍然要兜一圈回到起点,再继续送第二颗糖,只有当送最后一颗糖的时候,我才可以不用返回原车站,所以总的消费是:

n + n + dist(s, i) + dist(i, e);如果另外还有一个车站的糖果数量也是3个,那么我们要求的时间就是两个车站中运送最后一颗糖花费时间最多的那个,即 max(n + n + dist(s, i) + dist(i, e)) 。

 dist(a, b)表示的是从 a 到 b 的距离,s为起点,e为终点,i 为中间点,n为火车绕一圈花费的时间。

通过上面的公式我们能看出,不管前面两个糖的运送距离有多长,我们都需要花费n的时间,我们只有让最后一颗糖花费时间尽可能的小,才能保证总花费时间是最小的。所以贪心的策略就如开始说的那样,最远的最先取,最近的最后取。

因为每到一个站都可以运送一颗糖果,所以只要我现在在运送的糖果花费的时间是n,其他站的糖果如果花费的时间也是n,或者小于n,就可以顺便完成运送任务。

通过公式,我们能很清晰的知道自己需要什么数据,首先公式中 n的个数取决于当前车站的糖果总数,如果当前车站有 cnt 颗糖,那么就有 n*(cnt-1)的消费,然后就是某车站所有糖果中运送距离最短的值 dist(i, e),因为最后总的消费时间取决于最后一颗糖,所以我们要求的就是 max(n*(cnt-1) + dist(s, i) + dist(i, e) )。

这里要注意的是,如果cnt == 0,直接套公式是会减少花费的时间的,但事实上,车站没糖,时间一样是在消耗的。

#include <iostream>
#include <queue>
#include <cstring>
#include <string>
#include <map>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>

using namespace std;

#define lson (cur<<1)
#define rson (cur<<1|1)
typedef long long ll;
typedef pair<int, int> pii;

const int INF = 0x3f3f3f3f;
const long long LINF = 1e18;
const int Maxn = 5e4+10;
const int Mod = 1e9+7;

int cnt[20010], minxd[5010];

int dist(int a, int b, int n) {
    if(a <= b) return b-a;
    else return n-(a-b);
}

int main(void)
{
    int n, m;
    cin >> n >> m;
    int t1, t2;
    memset(minxd, 0x3f, sizeof(minxd));
    memset(cnt, 0, sizeof(cnt));
    for(int i = 0; i < m; ++i) {
        cin >> t1 >> t2;
        if(t1 == t2) continue;
        cnt[t1]++;
        minxd[t1] = min(minxd[t1], dist(t1, t2, n));
    }

    for(int i = 1; i <= n; ++i) {
        ll ans = -1;
        for(int j = 1; j <= n; ++j) {
            if(cnt[j] == 0) continue;
            ans = max(ans, (ll)dist(i, j, n)+minxd[j]+n*(cnt[j]-1));
        }
        cout << ans << " ";
    }
    return 0;
}

 

C#上位机案例:西门子S7协议通信+实时曲线显示(WinForm+ZedGraph) 创建/// PLC数据模型(对应DB1块)/// 采集时间(用于曲线的X轴)set;/// 温度值(℃)set;/// 压力值(MPa)set;/// PLC通信状态set;西门子S7协议通信和实时曲线显示,也是工控现场最常见的场景之一。整个开发过程的关键不在于“写出代码”,而在于“写出符合工控场景的稳定代码”——比如解耦通信逻辑与界面逻辑、处理跨线程问题、限制数据点数量、释放资源等。新手在学习时,建议先跟着步骤搭建好环境,跑通基础功能,再逐步尝试进阶优化。需要注意的是,工控上位机的核心是。 阅读详情

相关推荐

手把手教你用Ubuntu Base 20.04打造轻量级ARM开发板根文件系统(附常见问题解决)

本文详细介绍了如何基于Ubuntu Base 20.04 LTS构建轻量级ARM开发板根文件系统,涵盖环境准备、镜像制作、跨架构配置、软件包定制及常见问题解决。通过实战指南,开发者可快速掌握ARM架构下的根文件系统构建技巧,优化系统性能并解决部署中的典型问题。

gin88的博客 210

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)C.Connect

C.Connect 每次测试的时间限制1秒 每次测试的内存限制256兆字节 输入标准输入 产量标准输出 爱丽丝生活在一个平坦的行星上,可以建模为正方形网格 n × n,枚举自的行和列 1 至 ñ。我们代表行的交叉处的单元格[R 和专栏 C 有序对 (r ,c )。网格中的每个单元都是陆地或水。 一个行星的例子 n = 5。它也出现在第一次样本测试中。 爱丽丝居住在陆地小区(r1,c1)。她希望行进...

八百标兵奔北坡的博客 793

【中兴交换机MC-LAG配置】

​ 中兴mc-lag配置 主设备配置如下: Keepalive链路 interface smartgroup1023 //用作MC-LAG的Keepalive链路接口 switch attribute disable yes description For_Keepalived exit interface xgei-0/1/1/47 switch attribute disable yes description For_Keepalived exit interface

qq_31440733的博客 1万+

codeforces 1129 A2. Toy Train【贪心】

题目大意 有1-n个站点,成环形,有一辆运货车,在这个n个站点之间运输糖果,货车只能按照1-&gt;n的方向走,到第n个站的时候,又回到的1,现在告诉你有m个运输任务,从x站点运输一个糖果到y站点。已知货车的容量足够大,可以同时装无数个糖果,但是每一次经过一个站的时候,只能够选择其中一项任务进行运输,假设从一个站到另一个站的运输时间为1,请问从1-n每个站点作为起点,最短的运输时间分别是多少 题目...

beckyUp的博客 528

Vivado时序违约小结

目录1. setup time违约1.1 逻辑级数太高1.2 Fanout太大2. hold time 违约2.1 异步信号处理导致hold time违约 1. setup time违约 建立时间是工程设计中最常遇到的问题了。一般说来,导致建立时间违例主要有两个原因:逻辑级数太大或者扇出太大,当然也可以尝试通过降频来解决建立时间违约。 1.1 逻辑级数太高 Levels指的是逻辑级数logic level,一个logic level的延迟对应的是一个LUT和一个Net的延迟,对于不同的器件,不同频率的设计能

mu_guang_的博客 7155

农经权二轮延包—地块示意图生成

本文介绍了地块示意图制作软件的使用方法及模板制作要点。软件通过设置六个参数(示意图模板、属性数据、地块DBF、导航图、地块图片及存放位置)自动生成Word文档,并可导出PDF。文章详细说明了5页Word模板的制作过程,包括页脚三栏设置和页码插入技巧,支持每户最多28个地块的情况。同时指出该软件生成的图片分辨率(300dpi)满足清晰度要求,并提及软件免费提供插件但收费提供后续服务。

weixin_47364423的博客 1114

codeforces1130D2. Toy Train(思维+贪心)

D2. Toy Train time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Alice received a se...

Amove 677

知识推理——TransE(知识表示、知识嵌入)

知识图谱嵌入/表示方法 TransE

missyoudaisy的博客 1831

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) D1. Toy Train (Simplified)(思维)

  题目链接:http://codeforces.com/contest/1130/problem/D1        题意是有n个火车站m颗糖,车站编号从1到n(环形),火车也是从1到n方向开,下来m行每行有两个数a b,表示第a个车站有一颗糖要被运往b,已知火车在一个站只能装一颗糖(这个意思不是火车只能容纳一颗糖,而是一次只能装上一颗糖),但是可以卸掉任意颗糖,问将所有的糖运往目的地后所走...

Charles_Zaqdt的博客 448

NXP KW45开发实战:如何在MCUXpresso IDE中正确配置J-Link并解决设备识别问题

本文详细介绍了在MCUXpresso IDE中配置J-Link以支持NXP KW45无线MCU开发的实战指南。从环境准备到J-Link深度配置,再到烧录流程优化和高级调试技巧,帮助开发者高效解决设备识别问题并提升开发效率。特别推荐使用JLinkRemoteServer.exe进行多设备并行调试,并提供了烧录速度优化和低功耗调试的实用技巧。

gray5的博客 864

LVGL 源码分析大全

LVGL 是一款流行的免费和开源嵌入式图形库,为纯C的轻量级GUI框架,支持framebuffer直接渲染图层,因此LVGL能更容易为 MCU、MPU等显示设备开发漂亮的UI。可视化的 UI 编辑器官方上有推荐使用工具。当然,也可以选择 NXP(恩智浦半导体) 提供的工具。........................

Bigan(安)的博客 1万+

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)D2. Toy Train(思维)

题目链接:https://codeforces.com/contest/1130/problem/D2   题目大意:有n个车站,按照环前进,有m条要求从x送到y,每次从x最多能拿一个糖,输出在第i个车站出发最少需要多少时间完成所有要求   题目思路:根据要求得到每个点需要送出的糖果数,并且把每个点要到的地方存一下。枚举第s个车站出发,然后枚举每一个点,计算到达这个点以及把这个点需要送的货...

smilestruggler_Fly To Higher 369

第201期 解锁科研效率新高度:Claude 科学技能插件(claude-scientific-skills)深度体验

科研AI助手Claude Scientific Skills开源工具为Claude大模型扩展科学能力,覆盖数据可视化、数学计算、学术格式处理等科研全流程需求。该插件支持LaTeX公式生成、自动化科研图表绘制、学术文档规范校正等功能,让研究人员通过自然语言指令即可完成专业任务。项目开源可定制,支持特定学科需求扩展,目前已托管于GitHub。使用门槛低,只需配置Claude API密钥即可快速启用,帮助科研人员从繁琐技术细节中解放,聚焦核心研究创新。

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 1358

【贪心好题】Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) D2. Toy Train

D2. Toy Train http://codeforces.com/contest/1130/problem/D2 这次有5000个点,20000个糖 不能直接暴力,但是可以知道,贪心的思路还是每次先装载距离最远的 那么因为一个城市一次只能装载一颗糖,所以这个点最少需要走(k-1)*n+x, k是这个点一共要装载的糖数,x是这个点装载的最小距离的糖果 !!!注意如果该点没有糖,不要...

qq_41037114的博客 202

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【暴力模拟+贪心】Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) D1. Toy Train (Simplified)

D1. Toy Train (Simplified) http://codeforces.com/contest/1130/problem/D1 给你n个点,m个糖,告诉你这个糖要从x点拿到y点,每次经过一个城市只能拿一个糖,但可以放任意数量的糖 问你从任意一个点开始走,最少要走几步,只能从1-&gt;2-&gt;3-&gt;4……-&gt;n-&gt;1  先带走最远的糖,这样省下来的就...

qq_41037114的博客 563

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) 题解

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) 题目链接:https://codeforces.com/contest/1130 A. Be Positive 题意: 给出n个数,看是否正数的个数过半或者负数的个数过半。 题解:水题,代码如下: #include <bits/stdc+...

dft539533的博客 180

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) C. Connect

C. Connect 题目链接-C. Connect 题目大意 给出起点终点,然后给你一张图,0代表陆地 1代表水,可以上下左右走陆地,也可以在两块陆地之前建隧道走,问你从起点到终点需要建的隧道最短长度是多少 解题思路 dfsdfsdfs 先对起点(a,b)(a,b)(a,b)深搜判断与终点(c,d)(c,d)(c,d)是否属于一个连通块,同时记录与起点属于一个连通块的点的坐标 若vis[...

Fiveneves的博客 217

Codeforces Round #542 (div1A1A2 & B&C)

文章目录Codeforces Round #542A Toy TrainB. Wrong Answer Codeforces Round #542 A Toy Train 题意: 有一个n个节点的环,编号1,n,在每个节点有若干个糖果,需要运送到某个节点,我们现在从节点1出发,每次只能从一个节点中取出一个糖果,但可以放下多个,现在问将所有的糖果放到目的地需要多久? 分析: 我们选择先遍历一遍,假...

海边拾贝,沧海一粟 367

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)题解

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)题解 A. Be Positive 题目大意 给出一个数组,让所有的数除去一个数,使得数组中正数的数量大于数组数量总数的一半(向上取整) 解题思路 统计正数的数量和负数的数量,如正数大于一半则除1,如负数大于一半则除-1,如都没有则无解 AC代码 #include&lt;bits/...

FLY_WHITE的博客 536

D1. Toy Train (Simplified)(贪心)

This is a simplified version of the task Toy Train. These two versions differ only in the constraints. Hacks for this version are disabled. Alice received a set of Toy Train™ from Bob. It consists of...

Kuguotao的博客 472

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) A. Be Positive(水题)

  题目链接:http://codeforces.com/contest/1130/problem/A        题意是输入n个数,让找一个d,使得所有数除以d,问除以d以后如果有x个正数,且x大于等于n/2向上取整,就输出这个d。        思路就是找有多少个正数和多少个负数,然后除以1或除以-1就好了。 AC代码: #include &lt;bits/stdc++.h&gt...

Charles_Zaqdt的博客 276

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) C. Connect(bfs)

  题目链接:http://codeforces.com/contest/1130/problem/C        题意是给了一个n*n的地图,然后给了起点和终点的坐标,其中地图中陆地为0,水面为1。有一个人只能走陆地,他想从起点走到终点,他可以在任意两个陆地之间建一座桥(只能建一座桥),花费为欧几里得距离,问他从起点到终点的最小花费为多少(如果不用建桥就是0)。        思路是因为...

Charles_Zaqdt的博客 370

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)

学大佬来一波题解。。。。。 A. Be Positive 题意:给你一个数组 a , a 里面的每一个数除以一个相同的数 x , 得到的新的 a 数组, 若该数组里的正数或负数的个数大于数组长度的一半 , 便输出 x 的值 , 若没有则输出0; 思路 :记录数组里的正数和负数 , 判断他们有没有大于数组长度的一半 , 若有直接输出 1 或 -1 , 若没有输出 0 ;...

短发 239

Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) A 模拟

链接:戳这里 A. Bear and Elections time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Limak is a grizzly bear who desires power and adorat

Cross 374

Codeforces Round #542 (Div. 2)

A. Be Positive 简单题,代码已AC #include&lt;bits/stdc++.h&gt; using namespace std; int n,t; int main() { scanf("%d",&amp;n); int g=0,l=0; for(int i=0;i&lt;n;i++) { scanf("%d",&amp;...

qq_41758381的博客 235

Codeforces Round #545 (Div. 2)B. Circus(思维)

题目链接:http://codeforces.com/contest/1138/problem/B 题意:给你两列01串,从第一列中挑出一些0和1,并且下标只能用一次,也就是在第一列挑下标为1的数第二列就不能用了,最终挑选n/2个数,并且使第一列1的个数和第二列相等,输出第一列挑选数的下标,如果不能输出-1。 思路:挑选第一列为1第二列为0的数相当于第一列+1,挑选第一列为0第二列为1的数相当...

sugarbliss 829
上一篇: POJ - 1201 Intervals 【spfa解决差分约束问题】
下一篇: POJ - 2019 Cornfields 【二维线段树】
Y390d
博客等级 码龄9年 11粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值