国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

網(wǎng)易編程題(合唱團)

2019-11-10 20:48:55
字體:
來源:轉載
供稿:網(wǎng)友

網(wǎng)易編程題(合唱團)

有 n 個學生站成一排,每個學生有一個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎?

輸入描述: 每個輸入包含 1 個測試用例。每個測試數(shù)據(jù)的第一行包含一個整數(shù) n (1 <= n <= 50),表示學生的個數(shù),接下來的一行,包含 n 個整數(shù),按順序表示每個學生的能力值 ai(-50 <= ai <= 50)。接下來的一行包含兩個整數(shù),k 和 d (1 <= k <= 10, 1 <= d <= 50)。

輸出描述: 輸出一行表示最大的乘積。

輸入例子: 3 7 4 7 2 50

輸出例子: 49

#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ long long temp_k = -1e17; vector< long long > students; long long n; cin >> n; long long sum = n; while (n--) { long long temp; cin >> temp; students.push_back(temp); } long long k, d; cin >> k >> d; struct min_max{ min_max() :min{ 0 }, max{ 0 }{}; long long min; long long max; }; //聲明結構體,因為有正有負所以要保存最大值和最小值 //vector<vector< long long >> *res = new vector<vector< long long >>{ n, vector< long long >{d, 0} }; vector<vector<min_max>> *res = new vector<vector< min_max>>(sum, vector<min_max>(k, min_max())); for (long long i = 0; i <sum; ++i) { (*res)[i][0].max = (*res)[i][0].min = students[i]; } //以i結尾的至多包含k個數(shù)字的成績的最大值和最小值; for (long long i = 1; i <sum; ++i) { for (long long j = 1; j <= i&&j < k; ++j) { long long temp_min = -1e17; long long temp_max = 1e17; for (long long w = 1; w<i + 1 && w <= d; ++w){ if (temp_min<max(students[i] * (*res)[i - w][j - 1].min, students[i] * (*res)[i - w][j - 1].max)) temp_min = max(students[i] * (*res)[i - w][j - 1].min, students[i] * (*res)[i - w][j - 1].max); if (temp_max>min(students[i] * (*res)[i - w][j - 1].min, students[i] * (*res)[i - w][j - 1].max)) temp_max = min(students[i] * (*res)[i - w][j - 1].min, students[i] * (*res)[i - w][j - 1].max); } (*res)[i][j].max = temp_min; (*res)[i][j].min = temp_max; } } for (auto c : (*res)) { if (c[k - 1].max>temp_k) temp_k = c[k - 1].max; } cout << temp_k << endl; delete res; return 0;}
上一篇:二叉樹

下一篇:上升子序列

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 肃宁县| 襄垣县| 黑河市| 绥宁县| 博兴县| 定南县| 丽江市| 石台县| 宜君县| 青海省| 盐池县| 隆德县| 楚雄市| 重庆市| 滦南县| 永康市| 曲沃县| 海淀区| 石渠县| 明光市| 新平| 沅江市| 芮城县| 新疆| 白银市| 博白县| 金阳县| 汝州市| 渭源县| 陵川县| 突泉县| 黄山市| 阿拉善左旗| 永顺县| 黑山县| 西平县| 永靖县| 清水县| 若羌县| 观塘区| 礼泉县|