蓝桥杯训练题,能量项链,c++/c语言,codeblocks编译。
在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有 N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标 记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗 能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为mrn(Mars单位),新产生的珠子的头标记为m, 尾标记为n。
需要时,Mars人就用吸盘夹住相邻的两颗珠子,通过聚合得到能量,直到项链上只剩下一颗珠子为止。显然,不同的聚合顺序得到的总能量是不同的,请你设计一个聚合顺序,使一串项链释放出的总能量最大。
例如:设N=4,4颗珠子的头标记与尾标记依次为(2,3) (3,5) (5,10) (10,2)。我们用记号◎表示两颗珠子的聚合操作,(j◎k)表示第j,k两颗珠子聚合后所释放的能量。则第4、1两颗珠子聚合后释放的能量为:
(4◎1)=1023=60。
这一串项链可以得到最优值的一个聚合顺序所释放的总能量为
((4◎1)◎2)◎3)=1023+1035+10510=710。
输入
第一行是一个正整数N(4≤N≤100),表示项链上珠子的个数。第二行 是N个用空格隔开的正整数,所有的数均不超过1000。第i个数为第i颗珠子的头标记(1≤i≤N),当i〈N时,第i颗珠子的尾标记应该等于第i+1颗 珠子的头标记。第N颗珠子的尾标记应该等于第1颗珠子的头标记。
至于珠子的顺序,你可以这样确定:将项链放到桌面上,不要出现交叉,随意指定第一颗珠子,然后按顺时针方向确定其他珠子的顺序。
输出
只有一行,是一个正整数E(E≤2.1*10^9),为一个最优聚合顺序所释放的总能量
样例输入
4
2 3 5 10
样例输出
710
这题目很是迷惑人,本人刚开始做的时候以为是按照顺时针下去,用联合后的珠子跟下一个珠子合璧,其实这是一种特殊情况,真正的思路应该是,从顺时针开始找,找到两个最小的珠子先联合,然后再找两个最小的珠子联合,此刻的两颗珠子不一定含有原先的珠子。
自然,若是你没有想到从最小的珠子联合开始,那就计算每一种可能,但这种比较可怕,因为第一次两颗珠子联合的情况就有多种,然后从第二次开始,又有多种联合状况,而第二次中的多重联合里的其中一种联合,又有多重联合。这其实也有规律,认真想清楚应该就可以了,但比较废脑筋。
按照第一种解题思路:我们可以知道,最小的两颗珠子,无非是一颗头标记最小,一颗尾标记最小。一颗珠子有两个标记,定义为x,y。但是有多颗珠子,我们要记录他们的顺序吧?也就是位置,1, 2,3 ,4……,所以我们可以定义一个结构体,然后用一个结构体数组来表示这三个变量。
#include<bits/stdc++.h>
using namespace std;
typedef struct node{int x,y;
}node;
int main(){//定义结构体数组node hyb[101];int n,x1,i=1;cin>>n;//赋值数组每一个xwhile(i<=n){cin>>x1;hyb[i].x=x1;i++;}//赋值每一个yhyb[i-1].y=hyb[i-n].x;while(i>1){i--;hyb[i-1].y=hyb[i].x;}int _count=0,a1=1,b1=1;for(int i=1;i<n;i++){//n个珠子最多有n-1次聚合。hyb[0].x=hyb[a1].x;hyb[0].y=hyb[a1].y;a1=1,b1=1;for(int j=1;j<=n;j++){//这里求每个hyb[i]里x,y谁最小,最大。if(hyb[j].x==0&&hyb[j].y==0){continue;}if(hyb[j].x<=hyb[0].x){a1=j;hyb[0].x=hyb[j].x;}if(hyb[j].y<=hyb[0].y){b1=j;hyb[0].y=hyb[j].y;}}_count+=hyb[b1].x*hyb[b1].y*hyb[a1].y;hyb[a1].x=hyb[b1].x;hyb[b1].x=0;//珠子联合后消失不见。hyb[b1].y=0;}cout<<_count<<endl;return 0;
}
注意:一个数组应该从下标0开始的,写代码也应该是这样,但对于一些复杂的题目,最后从下标1开始,这样我们留出下标0,可以方便做很多事情,比如这题目用到的排序。
蓝桥杯训练题,能量项链,c++/c语言,codeblocks编译。相关推荐
- 短时能量法代码c语言,[蓝桥杯][算法提高]能量项链 (Python代码)
# Python求解能量项链 对于这个题,刚入手可能题目就会吸引到很多朋友,翱翔Mars星:joy:,哈哈哈.进入正题,一般这个题的第一印象就是采用双向链表,但是不需要这么难,你只需要构造一个伪的循环 ...
- 蓝桥杯题目练习(能量项链)
算法提高 能量项链 原题链接:能量项链 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有 N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且, ...
- [蓝桥杯][算法提高]能量项链(区间dp)
题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有 N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一 ...
- 蓝桥杯训练题1427: [蓝桥杯][2013年第四届真题]买不到的数目【筛选符合题目的数字。有点类似筛素数】
题目链接: https://www.dotcpp.com/oj/problem1427.html 题目描述: 思路: 首先就是感觉这个题目好像有点不严谨.题目说的是输入为两个正整数,而且只要不大于10 ...
- 蓝桥杯真题——跑步锻炼(c语言)
目录 一.题目描述 二.解题思路 三.操作代码 一.题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 小蓝每天都锻炼身体. 正常情况下,小蓝每天跑 1 千米.如果某天 ...
- 蓝桥杯真题(路径)C语言
题目 小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径. 小蓝的图由 2021 个结点组成,依次编号 1 至 2021. 对于两个不同的结点 a, b,如果 a 和 b ...
- 2020蓝桥杯真题回文日期 C语言/C++
题目描述 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日.因为如果将这个日期按 "yyyymmdd" 的格式写成一个 8 位数是 202002 ...
- python解答蓝桥杯真题2 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在19351936年应邀来中国清华大学讲学。。。
python解答蓝桥杯真题2 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学.他曾在1935~1936年应邀来中国清华大学讲学... 问题描述 全排列模板: 美国数学家维纳(N. ...
- 第十届蓝桥杯真题题解
目录 一.组队(DFS) 二.年号字串(进制转换) 三.数列求值 四.数的分解 五.迷宫(BFS) 六.特别数的和(暴力) 七.完全二叉树的权值 一.组队(DFS) 题目描述 本题为填空题,只需要算出 ...
最新文章
- 深入理解JVM虚拟机(十):Java内存模型与多线程
- WINCE6.0+S3C6410下的DM9000A驱动
- MySQL高级 - 案例 - 系统性能优化分析
- 分享21款漂亮的WordPress高级主题
- H264中的SPS、PPS提取与作用
- 云计算的发展及应用--演讲用PPT
- 如何估算网站日承受最大访问PV
- 史上最强Dubbo面试26题和答案:核心组件+服务治理+架构设计等
- 2021-08-22监听器实现在线客户端统计
- Linux centosVMware mysql用户管理、常用sql语句、mysql数据库备份恢复
- 出租车轨迹数据地图匹配
- windows批处理命令大全
- 扬州大学计算机科学与技术怎么样,用实力说话!这3所“低调”的大学,有望成为“双一流”建设高校...
- 国内外顶尖人工智能实验室/AI实验室推荐!
- 160603、使用pd4ml.jar和ss_css2.jar转pdf的工具类
- Hive ANALYZE NOSCAN
- 怎样才能成为一名有创造力的领导者?
- html5均线图源码,通达信相当好的天机均线主图源码
- 浙江大学求是科学班计算机,浙江大学“汉语言文学(求是科学班)”2020年招生简章...
- Android init.rc介绍及其语法
热门文章
- 高德地图开发手册 php,地图控件-参考手册-地图 JS API | 高德地图API
- Oracle AWR报告详细分析
- Java输入输出流代码示例
- 文科生也能看懂的算法图解
- E/libc: Access denied finding property “persist.vendor.log.tel_dbg“Permission Denial: can‘t access
- 小鹅通六周年:新知识服务时代,做好企业的“共享CTO”
- hadoop开启后用http访问出错
- morgan stanley 面试资料(一)
- UWP实现ListBox颜色相间显示
- 密码学 加密文件系统