LeetCode AutoX 安途智行专场竞赛题解
Posted 沉迷单车的追风少年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode AutoX 安途智行专场竞赛题解相关的知识,希望对你有一定的参考价值。
前言:今天下午正好有空,再打一场周赛吧。
模拟:AutoX-1. 网页瀑布流
这题的思路应该是每次填补最小的那个数,所以我们每次填补后排序,返回操作完成后的最大值即可。
class Solution
public:
int getLengthOfWaterfallFlow(int num, vector<int>& block)
if (num >= block.size())
sort(block.begin(), block.end());
return block[block.size() - 1];
vector<int> temp(block.begin(), block.begin() + num);
sort(temp.begin(), temp.end());
int ans = temp[0];
if (num > block.size())
return ans;
for (int i = num; i < block.size(); i++)
temp[0] += block[i];
if (temp[0] > temp[1])
sort(temp.begin(), temp.end());
ans = max(ans, temp[temp.size() - 1]);
return ans;
;
AutoX-2. 蚂蚁王国的蜂蜜
这题注意每一次运算的时候都要把数据类型转换成double!!! 否则两个int相除的结果和double是不一样的。
剩下的我们用一个动态数组temp模拟每次操作即可。
class Solution
public:
vector<double> honeyQuotes(vector<vector<int>>& handle)
vector<double> ans;
vector<int> temp;
for (int i = 0; i < handle.size(); i++)
if (handle[i][0] == 1)
temp.push_back(handle[i][1]);
else if (handle[i][0] == 2)
for (int j = 0; j < temp.size(); j++)
if (temp[j] == handle[i][1])
temp.erase(temp.begin() + j);
break;
else if (handle[i][0] == 3)
if (temp.size() == 0)
ans.push_back(-1.0);
else
double ave = accumulate(temp.begin(), temp.end(), 0) / (double)temp.size();
ans.push_back(ave);
else if (handle[i][0] == 4)
if (temp.size() == 0)
ans.push_back(-1.0);
else
double ave = (accumulate(temp.begin(), temp.end(), 0) / (double)temp.size());
// cout << ave << " ";
double x = 0.0;
for (auto elem : temp)
x += (((double)elem - ave) * ((double)elem - ave));
ans.push_back(x/(double)temp.size());
return ans;
;
动态规划:AutoX-3. 出行的最少购票费用
转换成天数大于day条件下的最小票价问题,可以参考打家劫舍II的思路。
class Solution
public:
long long minCostToTravelOnDays(vector<int>& days, vector<vector<int>>& tickets)
int m = tickets.size();
vector<int> pts(m);
int n = days.size();
vector<long long> dp(n + 1, LLONG_MAX);
dp[0] = 0;
for (int i = 1; i <= n; ++i)
for (int j = 0; j < m; ++j)
while (days[i - 1] - days[pts[j]] >= tickets[j][0])
pts[j]++;
dp[i] = min(dp[i], dp[pts[j]] + tickets[j][1]);
return dp[n];
;
AutoX-4. 蚂蚁爬行
由于发现比赛的时候只剩几十分钟了,这题没时间搞,下次有空再看看吧!
继续加油!!!
以上是关于LeetCode AutoX 安途智行专场竞赛题解的主要内容,如果未能解决你的问题,请参考以下文章
"巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场(重现)解题思路