UVA 10271 佳佳的筷子 Chopsticks [DP的基本运用]

news/2024/5/4 9:49:08/文章来源:https://blog.csdn.net/m0_66603329/article/details/126601238

佳佳的筷子 Chopsticks

题面翻译

定义一个三元组(a,b,c)(a⩽b⩽c)(a,b,c)(a\leqslant b\leqslant c)(a,b,c)(abc),它的权值为 (a−b)2(a-b)^2(ab)2
。 给定 n(n⩽5000)n(n\leqslant5000)n(n5000) 个数,要求选出 k+8k+8k+8 个三元组,使得这k+8k+8k+8个三元组权值和最小。

输入数据是单调递增的。

题目描述

PDF

输入格式

输出格式

样例 #1

样例输入 #1

1
1 40
1 8 10 16 19 22 27 33 36 40 47 52 56 61 63 71 72 75 81 81 84 88 96 98
103 110 113 118 124 128 129 134 134 139 148 157 157 160 162 164

样例输出 #1

23

分析

考虑DP,如果如果当前筷子不选:

f[i][j]=f[i-1][j];

如果选当前筷子,和前面一支筷子算权值:

f[i][j]=f[i-2][j-1]+(a[i-1]-a[i])*(a[i-1]-a[i]);

然后比较两者的大小,取小的:

f[i][j]=min(f[i-1][j],f[i-2][j-1]+(a[i-1]-a[i])*(a[i-1]-a[i]))

我们要差的平方最小,所有必须是相邻筷子,差最小,差的平方也最小,所以筷子必须是排列好的,我们就可以考虑升序降序。
这里有三根筷子,而且长度依次递增,但是这里如果用升序不好实现选三根,所以我们用降序。
这里的权值又和最长的那一根筷子没关系,所以直接降序,看后面两根筷子的差的平方差。

代码

#include<bits/stdc++.h>using namespace std;int a[1000000];int f[10000][10000];int n,k;int T;int main()
{cin>>T;while(T--){cin>>k>>n;k+=8;for(int i=n;i>=1;i--){cin>>a[i];}memset(f,0x3f3f3f,sizeof(f));for(int i=0;i<=n;i++){f[i][0]=0;}for(int i=3;i<=n;i++){for(int j=1;j<=k;j++){if(i>=3*j){f[i][j]=min(f[i-1][j],f[i-2][j-1]+ (a[i-1]-a[i])*(a[i-1]-a[i]) );}}}cout<<f[n][k]<<endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_3226.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2、操作系统基本原理

操作系统基本原理 软件设计师需要有扎实的理论知识&#xff0c;而操作系统作为计算机科学最为基本的理论基础和分支领域之一&#xff0c;是软件设计师必须重点掌握的知识。本章将介绍操作系统相关的考点&#xff0c;并辅以练习题&#xff0c;以便考生切实掌握相关内容。 根据考…

【python经验总结】我与bug的那些日子

【python经验总结】我与bug的那段岁月 &#x1f496;&#x1f496;&#x1f496;&#x1f495;&#x1f495;&#x1f495;欢迎来到本博客&#x1f495;&#x1f495;&#x1f495;&#x1f496;&#x1f496;&#x1f496; . &#x1f381;支持&#xff1a;如果觉得博主的文章…

猿创征文|【Typescript】搭建TS的编译环境

多一些不为什么的坚持&#x1f933; 贤蛋 &#x1f95a;大眼萌 &#xff0c;一名很普通但不想普通的程序媛&#x1f64a; &#x1f4dd;本文章收录于专栏&#xff1a;Typescript学习 搭建TS的编译环境&#x1f388; 认识Typescript&#x1f48a; Typescript 的编译环境&#x1…

110道Java初级面试题及答案(最新Java初级面试题大汇总)

史上最全Java初中级面试题&#xff0c;发现网上很多Java初级面试题都没有答案&#xff0c;所以花了很长时间搜集整理出来了这套Java面试题大全&#xff0c;希望对大家有帮助哈~ 本人发现网上虽然有不少Java相关的面试题&#xff0c;但第一未必全&#xff0c;第二未必有答案&am…

windows系统使用docker-compose

windows系统使用docker-compose 为什么使用docker-compose&#xff1f; 使用 Docker Compose 可以轻松、高效的管理容器&#xff0c;它是一个用于定义和运行多容器 Docker 的应用程序工具 1、新建docker-compose.yml文件 在windows系统找到docker的安装目录&#xff1a;C:P…

2022 IDC中国数字金融论坛 | 筑基金融信创 共话金融科技新愿景

2022年8月18日&#xff0c;第十届“IDC中国数字金融论坛”于北京举行。本届论坛以“开放融合、数字信任、智慧金融”为主题&#xff0c;基于IDC对全球金融科技发展及行业趋势的研究&#xff0c;发布对金融行业趋势的解读与对数字金融发展的洞见&#xff0c;为金融领域资深专家及…

怎么把PDF转换成CAD文件格式呢?

我们在工作中难免会遇到各种文件格式&#xff0c;而每种格式都有其独特的优点。比如PDF文件格式比其他文件格式更稳定&#xff0c;基本上所有系统都可以打开&#xff0c;内容不容易修改。而CAD文件格式&#xff0c;在工程建设中&#xff0c;尤其是设计阶段被广泛应用。那么当我…

27、CityNeRF

简介 主页&#xff1a;https://city-super.github.io/citynerf/ CityNeRF能够将城市尺度的3D场景打包到一个统一的模型中&#xff0c;它能够保存从卫星到地面不等尺度的高质量细节。顶部:使用边缘颜色蓝色(L1)、绿色(L2)和橙色(L3)来表示从最远到最近的三个等级&#xff0c;P…

L73.linux命令每日一练 -- 第十章 Linux网络管理命令 -- dig和host

10.19 dig&#xff1a;域名查询工具 10.19.1 命令详解 ​ 【命令星级】 ★★★★☆ ​ 【功能说明】 ​ dig命令是常用的域名查询工具&#xff0c;可以用于测试域名系统的工作是否正常。 ​ 【语法格式】 dig [option] dig [选项]​ **说明&#xff1a;**在dig命令及后面…

Debian/Ubuntu/Kali 如何安装 Spotify 音乐白嫖神器

How to install Spotify on Debian/Ubuntu/Kali Linux 可能有小伙伴不了解&#xff0c;什么是Spotify&#xff1f;博主照搬维基百科来做 简要介绍&#xff1a; Spotify&#xff08;/ˈspɒtɪfaɪ/&#xff09;&#xff0c;中文译作“声田”&#xff09;&#xff0c;是一家瑞典…

如何图片批量重命名编号不要汉字?

如何图片批量重命名编号不要汉字&#xff1f;如果你是一个摄影发烧友&#xff0c;或者你是一名从事摄影相关工作的朋友&#xff0c;那么肯定经常会将拍摄好的照片转移到电脑上&#xff0c;然后进行批量重命名。其实不管什么时候&#xff0c;我们经常会遇到图片批量重命名的操作…

group by后,使用nvl失效问题

原因 首先&#xff0c;这篇博客写出了这个问题出现的原因&#xff1a; 链接: nvl(sum(字段),0) 的时候&#xff0c;能展示数据0&#xff0c;但是group by 下某个伪列的时候&#xff0c;查不到数据&#xff08;转载&#xff09; 这里我也总结下原因&#xff1a;没有记录返回则…

使用Kibana进行数据可视化

使用 Kibana 进行数据可视化 使用 ELK 堆栈&#xff08;Elasticsearch、Logstash 和 Kibana&#xff09;和 Elastic Stack 的一部分 Kibana 可视化和分析数据。 课程英文名&#xff1a;Data Visualization with Kibana 此视频教程共21.0小时&#xff0c;中英双语字幕&#x…

[模拟][模电][面试][运放]仪表放大器

前言 昨天访问量还是29万1千多&#xff0c;今天就变成了28万3千&#xff0c;CSDN又在倒退了&#xff01;&#xff01;&#xff01; 目录前言框图\;\\\;\\\;框图 虚短&#xff1a;放大器的正负输入假设短路&#xff0c;两个端口电位相同虚断&#xff1a;放大器的正负输入假设断…

Linux命令记录大全

至于为什么写下该篇博客 身为以为软件工程师平时在工作中会经常的使用Linux系统&#xff0c;久而久之会发现该系统比我们平时用的Windows系统有着巨大的优势&#xff0c;不管是从安全层面和可扩展层面。而Linux的命令可以说是非常的多并难以全部记住&#xff0c;所以我写下该片…

Hive 多数组合并 CONCAT_WS

目录 多列的情况 先上结果 拆分concat_ws 可以拆分数组 然后在用split切分再变回数组 多行合并 多列的情况 先上结果 select split(concat_ws(,,array("AAA", "bbb"), array(CCC,"AAA", "bbb"), array("GGG","…

react native 使用阿里字体图标库

前言 本文基于 “react-native”: “0.69.5” 版本。 1.下载iconfont图标文件 将iconfont图标文件放置在src/assets/fonts react native 所需的字体图标文件仅需iconfont.ttf这一个文件即可其余文件只是用于打开demo_index.html&#xff0c;打包时可将其余文件删除 2.链接字…

Java配置41-搭建Kafka服务器

目录 1.服务器环境 2.安装kafka 1&#xff09;上传安装介质 2&#xff09;解压安装 3&#xff09;修改配置文件 4&#xff09;启动zookeeper 5&#xff09;启动kafka 6&#xff09;测试 ​​​​​ 1.服务器环境 系统版本&#xff1a;Red Hat Enterprise Linux Server…

IC入行第一步:怎样选择岗位和公司?

IC行业是一个比较火的行业&#xff0c;不少人想要转行IC&#xff0c;但不知道该如何选择岗位和公司&#xff1f; 其实这得根据个人的学历和专业结合选择&#xff0c;转行之前一定要考虑清楚&#xff0c;不要盲从&#xff0c;毕竟入行是一件大事&#xff0c;得认真分析选择适合…

Java配置42-配置redis高可用(sentinel监控)

目录 1.服务器环境 2.Redis服务器概况 3.Redis高可用 1&#xff09;复制配置文件 2&#xff09;修改redis.conf 3&#xff09;修改sentinel.conf文件 4&#xff09;启动redis和sentinel 5&#xff09;配置redis信息 1.服务器环境 系统版本&#xff1a;Red Hat Enterpri…