前言:今天下午正好有空,再打一场周赛吧。
模拟: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. 蚂蚁爬行
由于发现比赛的时候只剩几十分钟了,这题没时间搞,下次有空再看看吧!
继续加油!!!