本文主要是介绍T208430 有钱的mz巨佬(我猜楼上才是签到题)题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 题目意思就是每两天相邻送的游戏数量得不一样,且每个游戏的价格会有不同,那么你如果想要输出最少的钱数,那你首先数量得最少,且相邻两天不能相同的话,就得按照1,2,1,2,1,2,1,2…这样去计算。然后再计算游戏价格,即单数天加一个游戏数价格,双数天加两个游戏数价格。但要保证最后钱数最少的话,那就得先把ai数组排个序。
- ai数组是4000,所以冒泡排序也是可以ac的。
//冒泡排序
#include <bits/stdc++.h>
using namespace std;
int ar[4005];int main() {int n, m, cnt = 0;long long s = 0;scanf("%d %d", &n, &m);for (int i = 0; i < m; i++) {scanf("%d ", &ar[i]);}for (int i = 0; i < m; i++) {for (int j = 0; j < m - i - 1 ; j++) {if (ar[j] > ar[j + 1]) {swap(ar[j], ar[j + 1]);
// int temp = ar[j];
// ar[j] = ar[j + 1];
// ar[j + 1] = temp;
//平常用的,用一个其他变量进行两数交换
// ar[j]^=ar[j+1];
// ar[j+1]^=ar[j];
// ar[j]^=ar[j+1];
//位运算进行交换}}}for (int i = 1; i <= n; i++) {if (i % 2 == 1) {s += ar[cnt];//单数加一次cnt++;} else {s += ar[cnt++];s += ar[cnt++];//双数加两次}}cout << s << endl;return 0;
}
//快排c++
#include <bits/stdc++.h>
using namespace std;
int ar[4005];bool cmp(int a, int b) {return a < b;
}int main() {int n, m, cnt = 0;long long s = 0;cin >> n >> m;for (int i = 0; i < m; i++) {cin >> ar[i];}sort(ar,ar+m,cmp);for (int i = 1; i <= n; i++) {if (i % 2 == 1) {s += ar[cnt];cnt++;} else {s += ar[cnt++];s += ar[cnt++];}}cout << s << endl;return 0;
}
这篇关于T208430 有钱的mz巨佬(我猜楼上才是签到题)题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!