P3918 [国家集训队]特技飞行

题目描述

神犇航空开展了一项载客特技飞行业务。每次飞行长 n 个单位时间,每个单位时间可以进行一项特技动作,可选的动作有 k 种,每种动作有一个刺激程度 ci​。如果连续进行相同的动作,乘客会感到厌倦,所以定义某次动作的价值为(距上次该动作的时间) ×ci​,若为第一次进行该动作,价值为 0。安排一种方案,使得总价值最大。

思路

1.每个动作最多两次

证明:假设动作ci,j,k三个时刻进行,那么收益是(kj)×c+(ji)×c=(ki)×c,所以中间时刻j形同虚设。

2.每次安排在两头,这样可以最大限度的使时间间隔最大

证明:易得

3.应该从大到小开始安排

证明:易得

代码

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<iomanip>
#define N 1010
using namespace std;
int m,n,c[N];
int ans=0;
long long read(){
long long x=0,h=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')h=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+(long long)(ch-'0');ch=getchar();}
return x*h;
}
int main(){
m=read(); n=read();
for(int i=1;i<=n;i++)c[i]=read();
sort(c+1,c+n+1);
for(int i=n,j=m-1;i>=1&&j>0;i--,j-=2){
ans+=(c[i]*j);
}
cout<<ans<<endl;
return 0;
}
posted @   Charisk_FOD  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示