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

CentOS 7下glibc升级到2.28的保姆级避坑指南(含GCC 7.3.1编译配置) 本文详细介绍了在CentOS 7系统中将glibc升级到2.28版本的完整流程,包括GCC 7.3.1的编译配置、环境变量设置、glibc编译的细节处理以及生产环境验证。文章特别强调了风险控制和避坑技巧,适用于需要提升系统兼容性的企业级用户。 阅读详情

题目链接: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;
}

 

Eureka自我保护机制 Eureka自我保护机制 默认情况下,当eureka server在一定时间内没有收到实例的心跳,便会把该实例从注册表中删除(默认是90秒),但是,如果短时间内丢失大量的实例心跳,便会触发eureka server的自我保护机制,比如在开发测试时,需要频繁地重启微服务实例,但是我们很少会把eureka server一起重启(因为在开发过程中不会修改eureka注册中心),当一分钟内收到的心跳数大量减少时,会触发该保护机制。可以在eureka管理界面看到Renews threshold和Renews(last 阅读详情

相关推荐

HC32 CAN通信

qqa

zhaopenglihui的博客 5433

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

电商秒杀场景下,如何用Redis+Lua脚本实现原子性库存扣减(附完整代码)

本文针对电商秒杀场景下的高并发与超卖难题,详细解析了如何利用Redis的原子性命令与Lua脚本实现可靠的库存扣减。通过对比多种方案,阐述了Redis+Lua作为黄金搭档的技术原理,并提供了从基础扣减到预扣减模型的完整代码实现,确保在高并发下数据的一致性与系统性能。

weixin_29219539的博客 503

codeforces 1129 A2. Toy Train【贪心】

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

beckyUp的博客 528

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

qq_73523062的博客 2089

ISP-全局色调映射(GTM)算法简单实现

色调映射算法,色彩空间转换LAB

notgoodenouf的博客 2240

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

SAP公司间STO业务解析(包含主数据解析、后台配置解析、前台业务演示)

SAP公司间STO业务解析

ww114784的博客 1017

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

基于MATLAB/Simulink平台进行新能源微电网运行控制的建模与仿真

新能源微电网是现代电力系统的重要组成部分,能够有效整合分布式能源(如光伏、风力发电)和储能设备,实现局部区域内的能源高效利用。微电网的运行控制涉及多源能量管理、负荷平衡以及并网/孤岛模式切换等关键问题。基于MATLAB/Simulink平台进行新能源微电网运行控制的建模与仿真,可以帮助研究者验证控制策略的有效性,并优化系统的动态性能和经济性。本项目旨在构建一个完整的新能源微电网模型,包括电源模块、储能模块、负荷模块以及控制器模块,并通过仿真分析其运行特性。

xiaoheshang_123的博客 421

SCADA|测试KingSCADA4.0信创版采集汇川PLC AC810数据

摘要:雷工分享KingSCADA4.0信创版采集汇川PLC数据的配置过程。由于项目繁忙,笔记更新延迟。信创产业要求采用国产化产品,此次通过ModbusTCP协议连接AC810 PLC。主要步骤包括:新建IOServer应用(需厂家协助从3.8升级至4.0)、安装ModbusTCP驱动、配置设备地址(192.168.1.88:5021)、运行IOServer并通过网页监控变量。尽管信创版操作体验较差,但出于国产化战略需要仍需使用。雷工表示理解产品初期不足,相信未来会逐步优化。2025年4月11日记录于四川绵阳

做有价值的事,积累有价值的笔记! 863

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

由JavaScript版迷宫游戏引出Java版迷宫地图生成器

Java案例:迷宫地图生成器 一、引入问题 本期18软件1班网页脚本实训项目是完成一个JavaScript版迷宫游戏。 迷宫地图是如何生成的呢?很简单,将一个正方形区域等分为若干行与若干列,比如25行25列,这样就有625个单元格,用一个二维数组map[25][25]就可以保存625个单元格信息,map[i][j] = 1表示该单元格要绘制砖,而map[i][j] = 0表示该单元格不绘制砖。 ...

howard2005的专栏 1473

【贪心好题】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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【暴力模拟+贪心】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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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、付费专栏及课程。

余额充值