蓝桥杯省赛夺奖冲刺营精讲二

「谈判」

题目描述

在很久很久以前,有 n 个部落居住在平原上,依次编号为 1 到 n。第 i 个部落的人数为。

有一年发生了灾荒。年轻的政治家小蓝想要说服所有部落一同应对灾荒,他能通过谈判来说服部落进行联合。

每次谈判,小蓝只能邀请两个部落参加,花费的金币数量为两个部落的人数之和,谈判的效果是两个部落联合成一个部落(人数为原来两个部落的人数之和)。

输入描述
输入的第一行包含一个整数 n,表示部落的数量。

第二行包含 n 个正整数,依次表示每个部落的人数。

其中,1≤n≤1000,1≤ti≤104

输出描述
输出一个整数,表示最小花费。

输入输出样例
示例 1
输入

4
9 1 3 5

输出

31

运行限制
最大运行时间:1s
最大运行内存: 128M

代码1

蓝桥杯官网的测试器好像有问题,我的这个代码通过了,但其实是错的,直接升序排序后,从左到右,一次谈判。
例:3 4 5 6,
(3+4)=7
(7+5)=12
(12+6)=20ans=39是错误的!!
import java.util.Arrays;
import java.util.Scanner;public class Main {static int n;static int[] people;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n=sc.nextInt();//部落数people=new int[n];for (int i = 0; i < n; i++) {people[i]=sc.nextInt();}Arrays.sort(people);int ans=0;int t=people[0];for (int i = 1; i < n; i++) {t=t+people[i];ans+=t;}System.out.println(ans);}
}

代码2

每次选了最小的两个谈判后,要进行排序
例:3 4 5 6,
(3+4)7
(5+6)11  //这时就在7 5 6中排序,选最小的俩
(7+11)18ans=36 我觉得有点像哈夫曼树,生成最短编码
import java.util.Arrays;
import java.util.Scanner;public class Main {static int n;static int[] people;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n=sc.nextInt();//部落数people=new int[n];for (int i = 0; i < n; i++) {people[i]=sc.nextInt();}Arrays.sort(people);int ans=0;int t;for (int i = 0; i < n-1; i++) {t=people[i]+people[i+1];ans+=t;people[i+1]=t;Arrays.sort(people,i+1,n);}System.out.println(ans);}
}

「排座椅」

题目描述

上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 D 对同学上课时会交头接耳。同学们在教室中坐成了 M 行 N 列,坐在第 i 行第 j 列的同学的位置是(i,j),为了方便同学们进出,在教室中设置了 K 条横向的通道,L 条纵向的通道。于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。

请你帮忙给小雪编写一个程序,给出最好的通道划分方案。在该方案下,上课时交头接耳的学生对数最少。

输入描述
输入第一行,有 5 各用空格隔开的整数,分别是 M,N,K,L,D(2≤N,M≤1000,0≤K<M,0≤L<N,D≤2000)。

接下来D 行,每行有 4 个用空格隔开的整数,第 i 行的 4 个整数 Xi,Yi ,Pi,Qi,表示坐在位置 (Xi,Yi) 与 (Pi ,Qi) 的两个同学会交头接耳(输入保证他们前后相邻或者左右相邻)。

输入数据保证最优方案的唯一性。

输出描述
输出共两行。

第一行包含 K 个整数,a1,a2,⋯aK,表示第a1行和a1+1 行之间、第 a2 行和第 a2+1 行之间、…、第 aK 行和第aK+1 行之间要开辟通道,其中 ai<ai+1,每两个整数之间用空格隔开(行尾没有空格)。

第二行包含 L 个整数,b1 ,b 2 ,⋯b k,表示第 b1 列和 b_1+1b 1 +1 列之间、第 b2列和第b2+1 列之间、…、第bL列和第b L +1 列之间要开辟通道,其中b i <b i +1,每两个整数之间用空格隔开(行尾没有空格)。

输入输出样例
示例 1
输入

4 5 1 2 3
4 2 4 3
2 3 3 3
2 5 2 4

输出

2
2 4

运行限制
最大运行时间:1s
最大运行内存: 128M

代码

最开始选了很多存储vector,map,数组,等,太浪费时间了!!想清楚再动手
找index的时候,每次都是选的最大的先输出,但其实不需要,按坐标由小到大就行!
import java.util.Scanner;public class Main {static int m,n,k,l,d;static int[] row;//行数,这一行讲话数static int[] col;//列数,这一列讲话数static int[] rowIndex;//列数,这一列讲话数static int[] colIndex;//列数,这一列讲话数public static void main(String[] args) {Scanner sc = new Scanner(System.in);m=sc.nextInt();//行数n=sc.nextInt();//列数k=sc.nextInt();//横过道数l=sc.nextInt();//纵过道数d=sc.nextInt();//说话数row=new int[m+1];rowIndex=new int[m+1];col=new int[n+1];colIndex=new int[n+1];int r1,c1,r2,c2,rowN=0,colN=0;while(d-->0) {r1=sc.nextInt();c1=sc.nextInt();r2=sc.nextInt();c2=sc.nextInt();int min;if(r1==r2) {min=Math.min(c1, c2);col[min]+=1;}else {min=Math.min(r1, r2);row[min]+=1;}}int index=0;for (int i = 0; i < k; i++) {index=findMax(row);rowIndex[index]=1;}for (int i = 0; i < l; i++) {index=findMax(col);colIndex[index]=1;}for (int i = 0; i < m+1; i++) {if(rowIndex[i]==1)System.out.print(i+" ");}System.out.println();for (int i = 0; i < n+1; i++) {if(colIndex[i]==1)System.out.print(i+" ");}}private static int findMax(int[] arr) {int posi=-1;int max=-1;for (int i = 0; i < arr.length; i++) {if(arr[i]>max) {max=arr[i];posi=i;}}arr[posi]=0;return posi;}
}

蓝桥杯省赛夺奖冲刺营精讲二相关推荐

  1. 2022年(第13届蓝桥杯省赛)Python 14 天夺奖冲刺营

    2022年(第13届蓝桥杯省赛)Python 14 天夺奖冲刺营 2022.03.25 攒了一周的视频直播没有看,更新完了直接看合集. 数据结构基础之链表篇 什么是链表 链表是线性表的链式存取的数据结 ...

  2. java蓝桥杯省赛第十届_2019年第十届蓝桥杯省赛-迷宫(BFS/Excel大法)

    这题用dfs搜不出来,需要使用bfs并记录路径,设置好方向顺序跑就ok 然而毕竟是暴力杯,我们的原则是代码能省就省(懒癌晚期 于是乎网上便出现了形形色色的题解,笔者综合了各路大神神乎其技的思想,总结出 ...

  3. 2020蓝桥杯省赛B组C++(第二场)真题

    心得体会 前面总结了很多历届的省赛真题,这次终于轮到自己上战场上体验真题啦~为此次蓝桥杯省赛也是准备了一两周时间,听说比较水,题不是很难,会暴力就能拿奖哈哈哈考完确实有点这样的感觉,但是能把五个填空题 ...

  4. 蓝桥杯国赛C++A组B组题解整理(第八、七、六、五、四届)

    [写在前面的话19.04.04] 今年省赛的结果出的意外得快,有很多小伙伴来和我分享他们进了省一的喜悦,并问我啥时候更新国赛题解,emmm--不是我不想更新,实在是抽不出时间,有缘再更--虽然不更新题 ...

  5. 关于2018年第九届蓝桥杯省赛(江苏赛区)

    为啥到现在才写呢...就是懒,是真的懒.题也没刷几个 (下面题目的超链接转自这里,并不是本人解法..只是因为有题目还有题解) 4.1举行的蓝桥杯也可以说是"愚人杯"了 早早的跟同学 ...

  6. 【蓝桥杯Web】大一小白参与蓝桥杯模拟赛二期web组体会

    目录 前言 一.相关比赛介绍 1.ACM国际大学生程序设计竞赛 2.蓝桥杯 3.GPLT团队程序设计天梯赛 4.leetcode周赛和双周赛 5.PAT 二.蓝桥杯 1.应该参加蓝桥杯吗? 2.如何进 ...

  7. 蓝桥杯省赛考试注意事项和省赛资料整理

    蓝桥杯省赛过来人的建议 本人是在山东区参加的第九届蓝桥杯单片机组,在比赛的过程中出现了很多的意外(在下面我会详细说明).我在比赛之前已经将历年的赛题,全部做过一遍了,个人感觉并不是很难. 给刚开始学的 ...

  8. 2020年第十一届蓝桥杯省赛及国赛心得(Java B组)

    省赛 今年省赛五道结果填空题,五道程序设计题.结果填空前三道比较简单,都对了.最后两道结果填空题有点难,就直接跳过去做程序设计题.前两道送分题,第三道深搜,第四道时间来不及,我直接暴力过50%样例.最 ...

  9. 2018届蓝桥杯省赛(javaC组)回顾

    绪言 博主去年代表学校参加了省赛,做完了我大概7道题能得分,其他题我不是特别有把握.我心里大概知道能得奖,但是得省一时超乎我自己意外的.往年蓝桥杯省赛一共是10道题.题型有填空题,代码补全题跟,编程题 ...

最新文章

  1. nginx FastCGI错误Primary script unknown解决办法
  2. 探索移动端的搜索设计
  3. 串行端口 linux,规范模式Linux串行端口
  4. 底部导航栏的几种实现方式
  5. 文件上传下载流程设计
  6. php bloginfo stylesheeturl,WordPress主题制作–bloginfo函数使用教程
  7. R语言基础入门(4)之数据类型与相应运算2
  8. linux 移动硬盘 大于4g,Linux下挂大于2G的NTFS格式移动硬盘方法
  9. docker搭建私有registry
  10. HTTP GET 和 POST 的区别
  11. linux磁盘性能监视,Linux磁盘I/O性能监控之iostat详解
  12. 基于Metronic的Bootstrap开发框架--工作流模块功能介绍(2)
  13. php自动生成网站地图
  14. cad直线和圆弧倒角不相切_cad中绘制圆角倒角有哪些技巧?
  15. 996下的最后一根稻草
  16. 重磅!上海出落户新政:双一流应届硕士可直接落户!
  17. 2018n年全国计算机考试,2018ncre全国计算机等级考试报名系统
  18. wx小程序工具下载及安装
  19. Unix和Linux
  20. JAVA反射中的Accessible

热门文章

  1. uniapp中上传图片(拍摄)和预览图片(图例和示例代码)
  2. php实现新闻浏览量,thinkphp实现统计页面浏览量
  3. HTML5期末大作业:餐饮行业网站设计——食品餐饮行业网站模板(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 美食生鲜零食网页设计
  4. 从信息熵、相对熵到交叉熵损失函数
  5. 在阿里做了4年软件测试,8月无情被辞,满腔怒火.....
  6. python解释器安装,pycharm安装
  7. 初学python100例-案例32 男孩女孩小孩人数 少儿编程案例讲解
  8. 四川天邑TY1608网络机顶盒卡刷(成功)
  9. Ubuntu22.04没有ttyUSB(无法访问 ‘/dev/ttyUSB‘: 没有那个文件或目录)问题解决
  10. html输入框是一条横线,html把输入的文本框变成一个下横线css样式