阿里云 超级码力在线编程大赛初赛 第1场(第245名)

文章目录

    • 1. 比赛结果
    • 2. 题目
      • 1. 树木规划
      • 2. 正三角形拼接
      • 3. 大楼间穿梭
      • 4. 对称前后缀

1. 比赛结果

通过了 3 题,第245名,进入复赛了,收获 T恤 一件,哈哈。
在这里插入图片描述
在这里插入图片描述

2. 题目

1. 树木规划

题目链接

描述

在一条直的马路上,有 n 棵树,每棵树有一个坐标,代表它们距离马路起点的距离。 如果每相邻的两棵树之间的间隔不小于 d,那么我们认为这些树是美观的。 请计算出最少移除多少棵树,可以让这些树变得美观。

树木的棵树为 n,1 <= n <= 10^5。 树木的坐标用 trees 表示,0 <= trees[i] <= 10^9。 最小美观间隔为 d,1 <= d <= 10^9。 保证输入的坐标是排好序的,且两两不相同。

说明

样例中,将位置 2 和 6 的树木移走,剩下 [1, 3, 5] ,它们是美观的。

示例
输入:
[1,2,3,5,6]
2
输出:
2

解题:

  • 直接遍历,不满足的移除
class Solution {
public:/*** @param trees: the positions of trees.* @param d: the minimum beautiful interval.* @return: the minimum number of trees to remove to make trees beautiful.*/int treePlanning(vector<int> &trees, int d) {// write your code here.int prev = trees[0], s = 0;for(int i = 1; i < trees.size(); ++i){if(trees[i]-prev < d)//不满足{s++;//移除}else{prev = trees[i];}}return s;}
};

2. 正三角形拼接

题目链接

描述

给出 n 根木棍,每次切割可以将1根木棍切成 2 段。请计算出最少切割几次,可以从所有木棍中选出 3 根,组成一个三角形。

一开始的木棍根数为 n,3 ≤ n ≤ 1000。所有木棍的长度为一个整型数组 lengths,1 < length_i ≤ 10^9。
切割必须要将木棍分成 2 根整数长度的木棍,而且总长度要和原木棍相等。

说明

可以从长为7的木棍中,切出2根长为3的木棍,那么木棍的长度应该为[2,3,1,3,3,5],可以拼出边长为3的正三角形。

示例
输入:
[2375]
输出:
2

解题:

class Solution {
public:/*** @param lengths: the lengths of sticks at the beginning.* @return: return the minimum number of cuts.*/int makeEquilateralTriangle(vector<int> &lengths) {// write your code here.map<int, int> m;int cut = 2;//最多切两次for(int i = 0; i < lengths.size(); i++) m[lengths[i]]++;//长度计数for(auto& mi : m){if(mi.second == 2)//有2段了{if(m.lower_bound(mi.first+1) != m.end())cut = min(cut, 1);//有更长的,切1次}else if(mi.second >= 3)//有3段了,不用切return 0;if(mi.first%2==0 && m.count(mi.first/2))cut = min(cut, 1);//如果能被平均切开,且有1段一样的,切1次就可以}return cut;}
};

3. 大楼间穿梭

题目链接

描述

蜘蛛侠在大楼间穿梭。大楼的高度可以看作是一个从左到右排列的数组。
现在蜘蛛侠站在第一栋大楼上,他想跳到最后一栋上。

  • 蜘蛛侠的视野为 k,他可以花费 x 点体力,用蛛丝移动到右侧k幢建筑中第一栋比当前位置高的大楼(应该是 高或者相同高度,题目有问题)。
  • 或者蜘蛛侠可以花费 y 点体力,跳跃到右侧接下来两栋大楼其中一栋。

请计算蜘蛛侠最少花费多少体力,到达最后一栋上。

大楼的高度为数组 heights,一共有 n 栋大楼,2 ≤ n ≤ 10^5,1 <= heights_i ≤ 10^9.蜘蛛侠的视野为 k,1 ≤ k ≤ n。两种行动的体力花费满足 1 ≤ x,y ≤ 10^9

说明
样例中,先花费6点体力跳到第三栋建筑,再花费10点到达最后一栋。

示例
输入:
heights=[154335]
k=3
x=10
y=6
输出:
16

解题:

  • 单调栈算出右侧高度 >= 当前的 第一个位置(逆序遍历)
  • 然后简单的动态规划即可
class Solution {
public:/*** @param heights: the heights of buildings.* @param k: the vision.* @param x: the energy to spend of the first action.* @param y: the energy to spend of the second action.* @return: the minimal energy to spend.*/long long shuttleInBuildings(vector<int> &heights, int k, int x, int y) {// write your code here.int n = heights.size(), i, j, K;stack<int> s;vector<int> rightTall(n, -1);//右侧高或者相等的第一个位置for(int i = n-1; i >= 0; i--) //单调栈{while(!s.empty() && heights[s.top()] < heights[i])//右侧比我小的,没有用s.pop();if(!s.empty() && s.top()-i <= k)//有大于等于我的,且距离在 k 以内rightTall[i] = s.top();//记录下来s.push(i);}vector<long long> dp(n, LONG_LONG_MAX);dp[0] = 0;for(int i = 0; i < n; i++) // DP{if(dp[i] == LONG_LONG_MAX)continue;if(i+1 < n && dp[i+1] > dp[i]+y)//右侧1dp[i+1] = dp[i]+y;if(i+2 < n && dp[i+2] > dp[i]+y)//右侧2dp[i+2] = dp[i]+y;if(rightTall[i] != -1 && dp[rightTall[i]] > dp[i]+x)dp[rightTall[i]] = dp[i]+x;//直接跳到 k 以内的 第一个 >= 我的位置}return dp[n-1];}
};

4. 对称前后缀

题目链接

描述

给定一个字符串 s。我们令一个字符串的权值为一个字符串的最长对称前后缀长度。
请求出 s 的所有子串权值的总和
例如,”abcxyzcba” 的最长对称前后缀的长度为3,因为“abc”“cba”对称。
字符串的长度为 n,1 ≤ n ≤ 3*10^3。字符串均由小写英文字符组成。

说明

样例中,单个字符的子串的权值为1,它们的和为 7。
另外的权值为:
"bacb"->1
"bacbdab"->2
"bdab"->1
"acbda'->1

所以权值和为12。

示例
输入:
"bacbdab
输出:
12

解题:

  • 区间DP
class Solution {
public:/*** @param s: a string.* @return: return the values of all the intervals.*/long long suffixQuery(string &s) {// write your code herelong long n = s.size(), ans = n;//区间DP,dp[i][j] 表示区间内的 子串的最大权值vector<vector<int>> dp(n, vector<int>(n, 0));for(int i = 0; i < n; i++)dp[i][i] = 1;for(int len = 1, i; len < n; len++){for(i = 0; i+len < n; i++){if(s[i] == s[i+len])//子串首尾相同{int length = len-1;//除去首尾 里面的子串[i+1, i+len-1]的长度if(dp[i+1][i+len-1] == length)// 里面正反序都相同dp[i][i+len] = dp[i+1][i+len-1]+2;//把两个端点都可以加上elsedp[i][i+len] = dp[i+1][i+len-1]+1;//只能加上1端}ans += dp[i][i+len];}}return ans;}
};

我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

01.神经网络和深度学习 W3.浅层神经网络(作业:带一个隐藏层的神经网络)

文章目录1. 导入包2. 预览数据3. 逻辑回归4. 神经网络4.1 定义神经网络结构4.2 初始化模型参数4.3 循环4.3.1 前向传播4.3.2 计算损失4.3.3 后向传播4.3.4 梯度下降4.4 组建Model4.5 预测4.6 调节隐藏层单元个数4.7 更改激活函数4.8 更改学习率4.9 其他数据集下的表现选择题测试…

[编程启蒙游戏] 2. 奇偶数

文章目录1. 游戏前提2. 游戏目的3. python代码1. 游戏前提 孩子知道奇偶数是什么&#xff0c;不知道也没关系 还可以采用掰手指演示&#xff0c;伸出两个手指能配对&#xff0c;所有伸出来的手指都两两配对了&#xff0c;伸出来的手指个数就是偶数如果还有1个没有找到朋友的手…

过压保护(1)

征一个简单、可靠的电源过压保护电路 http://www.amobbs.com/thread-5542005-1-1.html 防过压&#xff1a;过压之后TVS导通&#xff0c;电流由正极流经自恢复保险再流经TVS到负极&#xff0c;自恢复保险升温&#xff0c;阻值变大&#xff0c;相当于断开&#xff0c;等电流撤去&…

spring boot+thmyleaf ModelAndView页面传值

如上图所示&#xff0c;当我们从后台通过ModelAndView进行传值的时候&#xff0c; 一定要注意&#xff0c;千万不要向上图那样开头加上反斜杠&#xff0c;开头加反斜杠&#xff0c;系统会默认为相对路径&#xff0c; 虽然也能找到相应的视图&#xff08;html&#xff09;&#…

LeetCode 214. 最短回文串(字符串哈希)

文章目录1. 题目2. 解题1. 题目 给定一个字符串 s&#xff0c;你可以通过在字符串前面添加字符将其转换为回文串。 找到并返回可以用这种方式转换的最短回文串。 示例 1: 输入: "aacecaaa" 输出: "aaacecaaa"示例 2: 输入: "abcd" 输出: "…

转:c#委托事件实现窗体传值通信

C#实现Winform窗口间数据交互的三种方法介绍 2010-03-15 来自&#xff1a;CNBLOG 字体大小&#xff1a;【大 中 小】摘要&#xff1a;本文分别介绍C#实现Winform窗口间数据交互的三种方法&#xff1a;修改子窗体的构造函数、给窗体添加属性或方法、通过委托的方法&#xff0c…

LeetCode 1566. 重复至少 K 次且长度为 M 的模式

文章目录1. 题目2. 解题1. 题目 给你一个正整数数组 arr&#xff0c;请你找出一个长度为 m 且在数组中至少重复 k 次的模式。 模式 是由一个或多个值组成的子数组&#xff08;连续的子序列&#xff09;&#xff0c;连续 重复多次但 不重叠 。 模式由其长度和重复次数定义。 …

R语言的安装与配置

一、什么是 R 语言 R 编程语言被广泛应用在统计科学和商业领域。 在各种编程语言排名中 R 语言的排名都很靠前。 它是一款集成了数据操作、统计&#xff0c;以及可视化功能的优秀开源软件。免费&#xff0c;开源是 R 重要的特点。 二、什么是 RStudio RStudio 是用亍 R 编程的…

R语言第一讲

一、R语言入门推荐 推荐四本材料书&#xff1a;R CookBook &#xff1a;hhtp&#xff1a;//www.cookbook-r.com/R in Action http://www.amazon.com/R-Action-Robert-Kabaccoff/dp/1935182390Ggplot2:Elegant Graphics for Data Analysis(User R):hhtp://www.amazon.com/ggplo…

LeetCode 1567. 乘积为正数的最长子数组长度

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums &#xff0c;请你求出乘积为正数的最长子数组的长度。 一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。 请你返回乘积为正数的最长子数组长度。 示例 1&#xff1a; 输入&#xff1a;nums [1,-2,-…

LeetCode 1568. 使陆地分离的最少天数(DFS)

文章目录1. 题目2. 解题1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid &#xff0c;其中 0 表示水&#xff0c;而 1 表示陆地。 岛屿由水平方向或竖直方向上相邻的 1 &#xff08;陆地&#xff09;连接形成。 如果 恰好只有一座岛屿 &#xff0c;则认为陆地是 连通的 &…

LeetCode 1569. 将子数组重新排序得到同一个二叉查找树的方案数(DP)

文章目录1. 题目2. 解题1. 题目 给你一个数组 nums 表示 1 到 n 的一个排列。 我们按照元素在 nums 中的顺序依次插入一个初始为空的二叉查找树&#xff08;BST&#xff09;。 请你统计将 nums 重新排序后&#xff0c;统计满足如下条件的方案数&#xff1a;重排后得到的二叉查…

ADS1.2开发环境创建与简要介绍

ADS1.2下建立工程 1.运行ADS1.2集成开发环境&#xff08;CodeWarrior for ARM Developer Suite&#xff09;&#xff0c;点击File|New,在New对话框中&#xff0c;选择Project栏&#xff0c;其中共有7项&#xff0c;ARM Executable Image是ARM的通用模板。选中它即可生成ARM的执…

阿里云 超级码力在线编程大赛初赛 第2场 题目1. 三角魔法

文章目录1. 题目2. 解题1. 题目 题目来源&#xff1a;https://tianchi.aliyun.com/oj/15165469968503404/76745683722506851 2. 解题 采用直线的一般式进行判定 首先要能组成三角形然后是我的位置和第3点在另外两点形成的直线同侧 class Solution { public:/*** param tria…

阿里云 超级码力在线编程大赛初赛 第2场 题目3. 五字回文

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/15165469968503404/76745683722506852 2. 解题 注意 a,b,c互不相同 class Solution { public:/*** param s: The given string* return: return the number of Five-character palindrome*/in…

python中解决死锁的方法

1.添加超时时间&#xff1a; fromthreading import Thread, Lock importtime mutex1 Lock() # 创建一个互斥锁 mutex2 Lock() # 创建一个互斥锁 def fun1(): while True: mutex1.acquire() print("线程1 锁住了mutex1") time.sleep(0.1) result mutex2.acquire(…

阿里云 超级码力在线编程大赛初赛 第2场 题目4. 小栖的金字塔(超级卡特兰数+除法求模/乘法逆元)

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/15165469968503404/76745683739284070 2. 解题 按道理可以DP暴力求解&#xff0c;但是数据规模太大&#xff0c;会超时的 手算前几项&#xff0c;然后去 oesi 网站查询数列&#xff0c;找到 大…

统计学习之箱线图

箱线图&#xff1a; 箱形图&#xff08;Box-plot&#xff09;又称为盒须图、盒式图或箱线图&#xff0c;是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。在各种领域也经常被使用&#xff0c;常见于品质管理。它主要用于反映原始数据分布的特征&#xff0c;还…

SQL SERVER 中 实现主表1行记录,子表多行记录 整合成一条虚拟列

表中有这样的记录&#xff0c;简单的主子表&#xff0c;现要想通过left join 语句把两表关联起来 select * from tbl_diary_reback a left join tbl_diary_reback_files s on a.id s.diaryrebackid where diaryid -7e0f6876:1400eb06d1f:-7fed and diaryrebackid 1a75114…

01.神经网络和深度学习 W4.深层神经网络

文章目录1. 深层神经网络2. 前向传播和反向传播3. 核对矩阵维数4. 参数、超参数参考&#xff1a; 吴恩达视频课 深度学习笔记 1. 深层神经网络 有的时候只有非常深的神经网络才能发挥作用。 但是无法提前预知多少层的神经网络合适&#xff0c;可以先尝试逻辑回归&#xff0c;…