2020牛客暑期多校训练营 (第三场)E Two Matchings【排序后按照 4或6个分成1块的选择 来dp】

Kriging代理模型理论相关推导 代理模型,Kriging,加点准则 阅读详情

题目链接

这个题我搞出来一个贪心,看起来对的一批,一选是最小,然后二选也是最小,但是不能这么搞的。因为一选最小不能保证一选+二选的结果也是最小的。然后比完赛发现师兄们一开始也是这样,搞出来假贪心,还觉得正确的一批。
先对a数组sort一下,就是从a[1]到a[n]递增。
头尾取法:对于最大是必为正数的,最小是必为负数的,那么中间错开来就是说ans=2a[n]-2[1];
为了得出这个期望,应该是按照连续两个a,或者是连续4个a进行分块,然后使用这个头尾取法。
当n=16;
决策如果是2分块:16 15进行万能取法,得到2a16-2a15
决策如果是4分块:16 15 14 13进行万能取法,得到2a16-2a13
然后开始dp就行了。

我打了个假算法,然后队友一针见血说了按4 6分块。

太草了,我该反省,为什么我想不到按照4 6 分块,他想到了。
附上队友的代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<cmath>
#include<fstream>
#include<list>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
const double eps=1e-2;
const double pi=acos(-1);
ll a[200005],dp[200005];
bool cmp(ll a,ll b){
    return a>b;
}
int main(){
    int t;
    scanf("%d",&t);
    while (t--){
        int n;
        scanf("%d",&n);
        for (int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        sort(a+1,a+1+n,cmp);
        if (n<=6)
        {
            printf("%lld\n",2LL*(a[1]-a[n]));
            continue;
        }
        dp[4]=a[1]-a[4];dp[6]=a[1]-a[6];dp[8]=a[1]+a[5]-a[4]-a[8];
        for (int i=10;i<=n;i+=2){
            dp[i]=min(dp[i-4]+a[i-3]-a[i],dp[i-6]+a[i-5]-a[i]);
        }
        printf("%lld\n",2*dp[n]);
    }
    return 0;
}
```c
单光子雪崩二极管(SPAD):原理、极高增益机制与微光探测解析 本文系统阐述了单光子雪崩二极管(SPAD)的工作原理及其在弱光探测中的应用。SPAD通过工作在盖革模式下的碰撞离化效应实现单光子探测,其核心机理包括:1)采用p+-n-n+结构实现高电场分布;2)通过雪崩倍增过程获得10^6量级增益;3)采用主动/被动淬灭机制实现快速恢复。文章详细分析了SPAD的关键性能参数(如光子探测效率、暗计数率等)及其在量子通信、激光雷达等领域的应用优势,揭示了该器件在极微弱光信号探测中的独特价值。 阅读详情

相关推荐

3种六轴IMU姿态解算算法对比:互补滤波、Mahony与卡尔曼滤波性能实测

本文深入对比了三种六轴IMU姿态解算算法:互补滤波、Mahony与卡尔曼滤波的性能表现。通过实测数据分析了各算法在精度、计算复杂度和适用场景上的差异,为无人机、机器人等运动控制系统提供了选型建议。重点探讨了六轴陀螺仪与加速度传感器的数据融合技术,帮助开发者根据项目需求选择最优解算方案。

weixin_29054245的博客 335

Two Matchings 动态规划,思维

题目链接 题意解析: 题中matching指的就是一个逆元为本身的置换,并且要求不能有不变元。这样可知p中的数必定是两两配对的(互相映射),如果p的长度为奇数必定会剩余一个数与自己配对,则无法构成matching,故长度必为偶数。 cost中由于i与pi是对称的(如1映射到5时,|a1-a5|与|a5-a1|计算了两次)。所以除2后,cost的含义为每次从a中取两个数,求其差的绝对值。 题解: 下面的提到的数组都是排好序后的 最小的取法: 其实我们需要找的就是一个使得cost最小的p和次小的q,显然最小就是

龙卡的博客 327

ORB-SLAM3复现的详细过程——配置安装及ROS和脚本运行---Ubuntu20.04

所提供的图像具有高动态范围,事先进行了光度标定,用20Hz的帧率采集,分辨率为1024像素*1024像素;需要下载数据集dataset-room1_512_16和rgbd_dataset_freiburg1_desk。在一键安装ROS后,只需要再安装Pangolin即可,其他所有的需要都已经存在。用微型飞行器采集的视觉惯性数据集,包含双目相机和IMU同步测量数据及位姿的真值。第二条命令中的${ROS_PACKAGE_PATH}是自己文件的路径。其采用的相机和IMU传感器,在硬件上进行了时间同步。

琉璃轻纱的博客 1万+

2020牛客暑期多校训练营(第三场)E-Two Matchings

题意: 分析: 根据条件 长度为n的序列a由1, 2, 3...n组成 可以得到序列是由基础序列1, 2, 3...n通过进行两两对调得到,且每个值进行且只进行一次对调。(这里就不仔细证明了,应该……在打这个比赛的人应该都能理解吧) 而我们需要得到的就是两个费用最小的串,即最小串和次小串 注意,接下来的讨论仅讨论排序后的下标,即如果写着11则指代 sort 后的数组w中最小的值 最小值: 首先是最小的值,那很明显,把w数组排序后,间隔着相减就可以得到,例如...

weixin_43870697的博客 218

Truncated SVD for faster dection

Truncated SVD方法最先被提出在《Fast R-CNN》论文中,用于降低全连接层的运算量,提升模型的速度。在卷积神经网络的分类任务中,FC层的运算速度远远大于CONV层,而在Fast R-CNN的目标检测任务中,大多数的运算时间发生在FC 的运算中,是因为针对每张输入图片,只进行一次卷积操作,而要对生成的Region Proposal,大致两千个,进行全连接操作进行分类与Bounding...

weixin_35747666的博客 1535

2023华为od机试C卷【最富裕的小家庭】Python 实现

在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。

MISAYAONE的博客 2042

牛客多校3 - Two Matchings(dp)

题目链接:点击查看 题目大意:给出 n 个点( n 为偶数 ),题目需要求出两个完全没有交集的匹配 q 和 p ,一方面使得 n 个点两两互相匹配,另一方面使得匹配的权值和最小 题目分析:一道 dp 题,比赛时贪心WA了一下午,就比较自闭了 因为 n 是偶数,所以可以考虑将 n 个数分配到不同的长度为偶数的环中,对于排列 q 和排列 p,只需要在偶环中交换一下位置就好了 但这个偶环的长度必须要大于 2 ,因为如果长度为 2 的话,那么无法保证两个匹配 q 和 p 不存在交集 还有一个需要观察或者猜

Falcon的博客 666

升级conda时出现Malformed version string invalid chars错误解决方案

但有时,当你使用“conda upgrade”的命令时,你可能会遇到一个错误,提示你的环境解析失败,出现“Malformed version string invalid chars”错误消息。如果以上两个步骤都没有解决你的问题,那么你可以考虑更新conda的依赖项。如果你的conda版本已经是最新的,那么你需要清理conda的缓存。最后,如果以上方法都无法解决问题,你可以尝试使用pip进行更新。如果你的conda版本过旧,你需要先更新conda。首先,你需要确认你当前使用的conda版本。

BUG?不存在的! 1409

牛客多校三 Two Matchings(思维+dp)

题目:https://ac.nowcoder.com/acm/contest/5668/E 思路: 1.把数组从小到大排序 2.第一组:相邻的两个为一对 3.第二组:四个或六个为一小组,小组内两两为一对(有多种情况,从中选择一种最小的,这个组合是确定的) ,用dp来做。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #

weixin_45113721的博客 266

【Apache Paimon】-- 13 -- 利用 paimon-flink-action 同步 mysql 表数据

在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式(1)人工通知(比如常规的使用邮件),然后运维人员手动同步到数据仓库中(2)使用 flink 消费 DDL binlog ,然后自动更新 Hive 的外部表和内部表 schema那么现在,有了 Paimon ,我们可以利用其特性,自动识别并同步 DDL 这些变化,并同步至 hive 的 paimon 格式表中。

欢迎来到我的博客,一起探索代码里的世界! 1249

强化学习原理及应用作业之动态规划算法【SYSU_2023SpringRL】

本次实践作业将在以下环境进行: 该环境由一个 6×6 网格组成,其中黄色圆圈为智能体出发点,黑色格子为无法通过的墙壁,若智能体向着墙壁方向移动,则会停留在原地,地图边界的移动同理。带有黄色边框的格子为终止状态,即若智能体行动至此状态则整个 episode 结束。红色和绿色表示当前该状态的奖励值,奖励越高则绿色越深,奖励越低则红色越深。状态空间:36(0-35 这 36 个整数,左下角为 0,向右 +1,向上 +6)动作空间:4(0-3 这 4 个整数分别代表左、右、上、下)奖励函数:普通格子 -0.1,到

zik的博客 1398

牛客多校第三场 E Two Matchings(DP)

思路: 可以想到两个排列的构造方法都是找n/2个点对,交换位置。 第一个排列的构造肯定是2 1 4 3 6 5…,即交换相邻两位,这样花费最小。 第二个排列不能与第一个排列冲突,假设可以拆成很多4,那么构造方法为 3 1 4 2。 除了4,为了使得交换位置的数尽可能相近,我们可以再拆6。 对长度为6的排列,最优的构造方法为 3 1 5 2 4 6,可以枚举出所以排列方法,发现此种方法最优(实际上观察样例就好了,第二个样例就是这么排的) #include<iostream> #include&l.

tomjobs的博客 520

Bev算法在J5平台的部署

支持多种形式的Bev算法:ipmlss时序,以及基于transformer的gkt。

@bangbang的博客 845

2020牛客暑期多校训练营(第三场)E.Two Matchings

2020牛客暑期多校训练营(第三场)E.Two Matchings 题目链接 题目描述 A permutation of length n is an array p=[p1,p2,…,pn]p=[p_1, p_2, \ldots, p_n]p=[p1​,p2​,…,pn​], which contains every integer from 1 to n (inclusive) and each number appears exactly once. For example, p=[3,1,4,6,2

旺崽的博客 2675

SAP B1中文培訓教材_SDK

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

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

2020牛客暑期多校训练营(第三场)E——Two Matchings

2020牛客暑期多校训练营(第三场)E——Two Matchings 题目描述 输入描述 The first line contains one integer t (1≤t≤5×10^4) --- the number of test cases. Each test contains two lines. The first line contains one integer n (n≥4n \ge 4n≥4 and n is even), The second line contains n

cxkdad的博客 353

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【2020牛客多校】2020牛客暑期多校训练营(第三场)E-Two Matchings——复杂思维与简单dp

比赛期间写博文,队友我家挖祖坟 主要是我数论只会gcd,所以我只好挂机了 题目连接 题意 (自己看原题面吧,赛中写的,思路更重要) 分析 (这里先跳过一段分析,主要是赛中来不及写了) 首先是最小的值,那很明显,把 a 数组排序后,间隔着相减就可以得到,例如下面已经排序后的下标序列: 1,2,3,4,5,61, 2, 3, 4, 5, 61,2,3,4,5,6 我们可以得到其最小的解为 (2−1)+(4−3)+(6−5)(2 - 1) + (4 - 3) + (6 - 5)(2−1)+(4−3)+(6−5)

AC不动机的博客 527

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

2020牛客暑期多校训练营(第三场) E.Two Matchings 构造+dp

题目链接:Two Matchings 题意 让你构造两个序长为n,列p,q,这两个序列各个位都不相同,并且满足pi≠i且ppi=i{p_i≠i 且p_{p_i} =i}pi​​=i且ppi​​=i。给你一个序列a,可以计算一个值(∑i=1nabs(ai−api))/2{(\sum_{i=1}^{n}abs(a_i-a_{p_i}))/2}(∑i=1n​abs(ai​−api​​))/2,找符合条件的p、q中,计算值之和最小的是多少。 题解 本题先来分析p、q序列,题目中给出pi≠i且ppi=i{p_i≠i

张小生的先生的博客 189

(2020牛客暑期多校训练营)[三]Two Matchings

题目描述 样例 输入 2 4 0 8 0 0 6 3 1 4 1 5 9 输出 16 16 思路 首先,这题a的范围很大,所以dp数组要开longlong。要先按a[i]的大小排序,相邻的两个数的复杂度是最低的。 本题是动态规划,a[i]表示前i个数字的最小复杂度,然后按照dp转移方程写就行了。输出dp[n]*2即可。 代码 #include<bits/stdc++.h> using namespace std; int n,t; long long a[200010],dp[200010

bbbll123的博客 251

2020牛客暑期多校训练营(第三场)E Two Matchings

E Two Matchings 给一个序列aia_iai​。 要找到两种完全不同的两两匹配,使得所有两两匹配的差的和最小,输出这个和。 比赛的时候觉得是一个二分图最小权值环,但是点太多,没法用完全图最小费用流做。(HDU 1853) 做出此题需要找到四个特性: 1、此题等价于找一些长度为偶数的环使得这些环恰通过每个点一次, 且所有边的总权重最少。 2、 2k 个点所构成的环的权重和的最小值为最大的权重减最小的权重。 3、先把所有点的按照权重排序,最佳解一定是出现在每个环都是由排 序后连续的点构成

侯山窝矿工 253

2020牛客暑期多校训练营(第三场)E、Two Matchings(思维、dp)

题目链接 题面: 题意: 定义一个排列为 ppp 匹配,当且仅当 pi!=i and ppi=ip_i!=i\space and\space p_{p_i}=ipi​!=i and ppi​​=i,我们可以发现p匹配中两两配对。 定义两个匹配 p,qp,qp,q 不相同,对于所有的i∈[1,n],pi≠qii\in[1,n],p_i \ne q_ii∈[1,n],pi​​=qi​ 给定一个数组a,定义一个p匹配的花费为 (∑i=1nabs(ai−api))/2(\

_Griefs 169

E. Two Matchings (dp / 规律) 2020牛客暑期多校训练营(第三场)

传送门 思路: 构造p和q数组,都是1到n的全排列,且满足p[p[i]]=i,p和q数组对应位置都不同。答案为 | a[i] - a[p[i]] | + | a[i] - a[q[i]] |。 其实理解了题意找到规律就是个比较经典的线性dp题。 n 是偶数,所以可以考虑将 n 个数分配到不同的长度的偶环中,对于q 和 p,只需要在偶环中交换下位置即可。 先将a排下序,然后对于任意 len >= 8 的偶环,都可以分解为 len = 4 和 len = 6 的偶环,且答案最小。并能总结到规律 l

Satur9的博客 181

2020牛客暑期多校训练营(第三场)------- Two Matchings

题目描述 输入描述: 输出描述: For each test, output one line which contains only one integer representing the answer of this test. 示例1 说明 #include <algorithm> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstrin

欢迎~ 169

2020牛客多校三 E. Two Matchings (dp+规律)

题意:给出一个序列a,构造两个数组p和q,且满足p[p[i]]=i,q[q[i]]=ip[p[i]] = i,q[q[i]] = ip[p[i]]=i,q[q[i]]=i,使得a[i]−a[p[i]]a[i]-a[p[i]]a[i]−a[p[i]]的绝对值和/2 最小,a[i]−a[q[i]]a[i]-a[q[i]]a[i]−a[q[i]]的绝对值和/2 也要最小,且p和q每一位都不等。 题解:dp+规律 简化一下题目,就是求两个不相等的匹配,使得数组a根据这个两两匹配的差值和最小。 因为n为偶数,差值最小

gongyuandaye的博客 302

2020牛客多校第三场 E Two Matchings

这道题目好像看到好多种做法 白话解释:就是类似两两交换,然后求与原来的差值的和最小,然后保证n>=4且是偶数 那就有点贪心的味道了,老贪心了,来来来 看看怎么构造使得绝对值的差最小,国际惯例遇到数组先sort, 然后看绝对值的贡献,不就是跨过的区间越小越好不是吗 然后就去算贡献了 代码: #include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<cstring> #incl

qq_43624815的博客 192

牛客(多校3):Two Matchings

示例1: 输入 2 4 0 8 0 0 6 3 1 4 1 5 9 输出 16 16 代码: #include<bits/stdc++.h> #define ll long long using namespace std; const int MAXN=2e5+5; ll a[MAXN],dp[MAXN]; int t,n; int main(){ scanf("%d",&t); while(t--){ scanf("%d",&n); ..

Mr顺 304

2020牛客暑期多校训练营Two Matchings(动态规划,构造)

题目描述 输入描述: 输出描述: 示例1 输入 2 4 0 8 0 0 6 3 1 4 1 5 9 输出 16 16 说明 题目大意 分析 总成本最小,即为第一种匹配最小,第二种次小。 首先,最小很好求,只要排序后两两匹配即可。 但是次小比较麻烦,一开始想两种情况取了min,后来发现并没有那么简单。(但是时间到了)。 接下来看次小的4个元素的情况。 由此可以发现4个元素的次小即为a[4]-a[2]+a[3]-a[1]=a[4]+a[3]-a[2]-a[1] (已经排序) 再看次小的6个元素的情况。

ZCETHAN 的博客 373
上一篇: 牛客算法周周练15-D树上求和【dfs序上建线段树】【模运算的问题】
下一篇: 杭电多校第一场05 杭电6755:Fibonacci Sum【斐波那契通项公式】
DevourPower
博客等级 码龄7年 52粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值