P3918 [国家集训队]特技飞行
题目背景
-
wqs 爱好模拟飞行。
-
clj 开了一家神犇航空,由于 clj 还要玩游戏,所以公司的事务由你来打理。
注意:题目中只是用了这样一个背景,并不与真实/模拟飞行相符
题目描述
神犇航空开展了一项载客特技飞行业务。每次飞行长 $n$ 个单位时间,每个单位时间可以进行一项特技动作,可选的动作有 $k$ 种,每种动作有一个刺激程度 $c_i$。如果连续进行相同的动作,乘客会感到厌倦,所以定义某次动作的价值为(距上次该动作的时间) $ \times c_i$,若为第一次进行该动作,价值为 $0$。安排一种方案,使得总价值最大。
输入格式
第一行,两个整数,$n$ 和 $k$,如上所述;
第二行,$k$ 个整数,表示 $k$ 种动作的 $c_i$ 值。
输出格式
仅一行,一个整数,表示最大总价值。
样例 #1
样例输入 #1
5 2
2 2
样例输出 #1
12
提示
数据规模与约定
-
对于 $10\%$ 的测试数据,$n \le 20$,$k \le 3$。
-
对于 $100\%$ 的测试数据,$1 \le n \le 10^3$,$1 \le k \le 300$,$0 \le c_i \le 10^3$。
想法
无论哪个动作做几次,都是最后一次和第一次的时间价值
所以很好理解:排序(从大到小),然后算最大值;
排序 贪心
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
int cmp(int a, int b) {
return b < a;
}
signed main() {
int n, k; cin >> n >> k;
int c[305];
for (int i = 0; i < k; i ) {
cin >> c[i];
}
sort(c, c k, cmp);
int max = 0;
for (int o = 0; (2 * (o 1) <= n) && (o <= k - 1); o ) {
max = (n - 1 - 2 * o) * c[o];
}
cout << max << endl;
return 0;
}
问题:
一直卡在sort(c,c k,cmp)这一个点,然后去看快速排序的原理
一直写的是cort(c,c 305,cmp),寻思可能是陷入死循环了(一堆0的排序)
所以以后排序要从有效值第一位到最后一位。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgehegf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01