【洛谷fromSSL_2020.10.29】捡石头

2023-10-17 20:10
文章标签 石头 洛谷 29 2020.10 fromssl

本文主要是介绍【洛谷fromSSL_2020.10.29】捡石头,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

捡石头


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

解题思路

贪心。我们存储每一个编号的两个节点的位置,求相邻两个编号的两个节点分别的差。有两种情况,我们取 min ⁡ \min min 即可,即:
a n s + = m i n ( a b s ( a [ i ] [ 1 ] − a [ i + 1 ] [ 1 ] ) + a b s ( a [ i ] [ 2 ] − a [ i + 1 ] [ 2 ] ) , a b s ( a [ i ] [ 1 ] − a [ i + 1 ] [ 2 ] ) + a b s ( a [ i ] [ 2 ] − a [ i + 1 ] [ 1 ] ) ) ; ans+=min(abs(a[i][1]-a[i+1][1])+abs(a[i][2]-a[i+1][2]),abs(a[i][1]-a[i+1][2])+abs(a[i][2]-a[i+1][1])); ans+=min(abs(a[i][1]a[i+1][1])+abs(a[i][2]a[i+1][2]),abs(a[i][1]a[i+1][2])+abs(a[i][2]a[i+1][1]));

code

#include<iostream>
#include<cstdio>
#include<cmath>
#define ll long long
using namespace std;ll n;
ll t,ans;
ll a[200010][3];int main()
{cin>>n;for(int i=1;i<=2*n;i++){scanf("%d",&t);if(a[t][1]==0)a[t][1]=i;elsea[t][2]=i;}ans=a[1][1]+a[1][2]-2;for(int i=1;i<n;i++)ans+=min(abs(a[i][1]-a[i+1][1])+abs(a[i][2]-a[i+1][2]),abs(a[i][1]-a[i+1][2])+abs(a[i][2]-a[i+1][1]));cout<<ans<<endl;
}

这篇关于【洛谷fromSSL_2020.10.29】捡石头的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/227686

相关文章

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

高精度计算(代码加解析,洛谷p1601,p1303)除法待更新

目录 高精度加法 高精度减法 高精度乘法 高精度加法 我们知道在c++语言中任何数据类型都有一定的表示范围。当两个被加数很大时,正常加法不能得到精确解。在小学,我们做加法都采用竖式方法。那么我们也只需要按照加法进位的方式就能得到最终解。 8 5 6+ 2 5 5-------1 1 1 1 加法进位: c[i] = a[i] + b[i];if(c[i] >=

洛谷 凸多边形划分

T282062 凸多边形的划分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 先整一个半成品,高精度过两天复习一下补上 #include <iostream>#include <algorithm>#include <set>#include <cstring>#include <string>#include <vector>#include <map>

能量项链,洛谷

解释:  环形dp问题还是考虑将环拉直,可以参考我上一篇文章:环形石子合并 [2 3 5 10 2] 3 5 10 将环拉直,[]内是一个有效的区间,可以模拟吸收珠子的过程,         如[2 3 5] <=>(2,3)(3,5)    2是头,3是中间,5是尾 len >= 3:因为最后[2 10 2]是最小的可以合并的有效区间 len <= n + 1因为[2 3

代码随想录Day 36|滑铁卢了,leetcode题目:1049.最后一块石头的重量、494.目标和、474.一和零

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 动态规划一、题目题目一:1049.最后一块石头的重量II解题思路: 题目二:494.目标和动态规划 (二维dp数组)#动态规划 (一维dp数组) 题目三: 474.一和零解题思路: 总结 动态规划 有点难了,之前差的有点多,找时间补 一、题目 题目一:1049.最后一块石头的重量II leetcode题目链接

基于Python的机器学习系列(29):前馈神经网络

在本篇文章中,我们将学习如何使用PyTorch构建和训练一个前馈神经网络。我们将以线性回归为例,逐步了解PyTorch的各个组件及其在神经网络中的应用。这些步骤包括: 指定输入和目标:我们将定义输入特征和目标变量。数据集和数据加载器:使用PyTorch的数据集和数据加载器来管理和加载数据。nn.Linear(全连接层):创建前馈神经网络中的线性层。定义损失函数:选择合适的损失函数

『功能项目』Unity本地数据库读取进入游戏【29】

本章项目成果展示 打开上一篇28Unity连接读取本地数据库的项目, 本章要做的事情是通过读取本地数据库登录进入游戏场景 首先创建一个脚本文件夹: 新建脚本:MySqlAccess.cs 编写脚本:MySqlAccess.cs using UnityEngine;using MySql.Data.MySqlClient;public class MySq

力扣1049-最后一块石头的重量II(Java详细题解)

题目链接:1049. 最后一块石头的重量 II - 力扣(LeetCode) 前情提要: 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 最近刚学完01背包,所以现在的题解都是以01背包问题为基础再来写的。 如果大家不懂01背包的话,建议可以去学一学,01背包问题可以说是背包问题的基础。 如果大家感兴趣,我后期可以出一篇专门讲解01背包问题。 dp五部曲。 1.确

洛谷P5490扫描线

0是最小的数字,将一个线段看成一个区间,对于一个矩形,从下扫到上,入边为1,而出边为-1,意思是将这个区间上的所有点加1(区间修改).把线段表示为Line[i],其中记录了l,r,h,tag,左右端点,高度,入边还是出边(1或-1) 那么每次区间修改后不为0的区间它的值可能是1,2,3或者是其它数字,这不好统计,可以将它转化一下,0是不是表示没有被覆盖过的地方,我们只要统计0的个数然后用总长减去

leetcode解题思路分析(五)29-36题

两数相除 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 本题思路倒是不难,既然不能用乘除法和mod,那使用减法是理所当然的,唯一需要考虑的是边界溢出情况 class Solution {public:int divide(int dividend, in