1 条题解
-
0
自动搬运
来自洛谷,原作者为

ggpw_XNW
弱小和无知从来都不是生存的障碍,傲慢才是!搬运于
2025-08-24 23:06:18,当前版本为作者最后更新于2024-12-28 16:29:08,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
先放代码:
#include<iostream> #include<cmath> using namespace std; unsigned long long n , a[100005] , T , k; int main(){ cin >> T; while(T--){ cin >> n >> k; unsigned long long maxn = 0; for(int i=1;i<=n;i++){ cin >> a[i]; maxn = max(maxn,a[i]); } if(k==0){ maxn = 0;unsigned long long ans = 0; for(int i=1;i<=n;i++){ maxn = max(maxn,a[i]); ans += maxn; } cout << ans << endl; }else{ if(n>2||(k%2==1&&a[1]<=a[2])||(k%2==0&&a[1]>=a[2]))cout << maxn * n << endl; else{ if(a[1]>a[2]){ if(k%2==0)cout << a[1] * 2 << endl; else cout << a[1] + a[2] << endl; } else{ if(k%2==0)cout << a[1] + a[2] << endl; else cout << a[1] + a[2] << endl; } } } } return 0; }解释:
对于每朵花,不难发现我们将美丽度最大的花交换到最前面,答案即为最大的。所以我们只需要将最大的花交换到最前面,然后其余操作可以无视。
注意:
如果 等于 ,或 等于 ,我们需要特判一下,详见代码。
- 1
信息
- ID
- 10443
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者