BZOJ 2697 特技飞行(贪心)

【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=2697

【题目大意】

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

【题解】

  我们发现一个动作进行两遍收益才是最大的,进行第三遍的话,
  第二遍的位置完全是没有必要做动作的,
  所以我们将c按照大小排序,从最两段到中间放置从大到小的动作即可

【代码】

#include <cstdio>
#include <algorithm>
using namespace std;
const int N=1010;
int n,k,a[N];
bool cmp(int a,int b){return a>b;}
int main(){
    scanf("%d%d",&n,&k);
    for(int i=1;i<=k;i++)scanf("%d",&a[i]);
    sort(a+1,a+k+1,cmp);int l=1,r=n,ans=0;
    for(int i=1;i<=k;i++){
        ans+=(r-l)*a[i];
        l++;r--;
        if(l>=r)break;
    }printf("%d\n",ans);
    return 0;
}
时间: 2024-08-25 03:10:07

BZOJ 2697 特技飞行(贪心)的相关文章

2697: 特技飞行

2697: 特技飞行 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 646  Solved: 393[Submit][Status] Description 神犇航空开展了一项载客特技飞行业务.每次飞行长N个单位时间,每个单位时间可以进行一项特技动作,可选的动作有K种,每种动作有一个刺激程度Ci.如果连续进行相同的动作,乘客会感到厌倦,所以定义某次动作的价值为(距上次该动作的时间)*Ci,若为第一次进行该动作,价值为0.安排一种方案,使得总价值最

BZOJ2697: 特技飞行

2697: 特技飞行 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 607  Solved: 363[Submit][Status] Description 神 犇航空开展了一项载客特技飞行业务.每次飞行长N个单位时间,每个单位时间可以进行一项特技动作,可选的动作有K种,每种动作有一个刺激程度Ci.如果连 续进行相同的动作,乘客会感到厌倦,所以定义某次动作的价值为(距上次该动作的时间)*Ci,若为第一次进行该动作,价值为0.安排一种方案,使得总价

bzoj2697特技飞行*

bzoj2697特技飞行 题意: N个单位时间,每个单位时间可以进行一项特技动作,可选的动作有K种,每种动作有一个刺激程度Ci.每次动作的价值为(距上次该动作的时间)*Ci,若为第一次进行该动作,价值为0.求最大总价值.N≤1000,K≤300. 题解: 因为如果同个动作做3次,不如只做头尾两次更好.所以把动作按Ci降序排序,把Ci大的尽量放在两端. 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <algori

Loj #3085. 「GXOI / GZOI2019」特技飞行

Loj #3085. 「GXOI / GZOI2019」特技飞行 题目描述 公元 \(9012\) 年,Z 市的航空基地计划举行一场特技飞行表演.表演的场地可以看作一个二维平面直角坐标系,其中横坐标代表着水平位置,纵坐标代表着飞行高度. 在最初的计划中,这 \(n\) 架飞机首先会飞行到起点 \(x = x_{st}\) 处,其中第 \(i\) 架飞机在起点处的高度为 \(y_{i,0}\).它们的目标是终点 \(x = x_{ed}\) 处,其中第 \(i\) 架飞机在终点处的高度应为 \(y

题解-GXOI/GZOI2019 特技飞行

Problem loj3085 bzoj不放题面差评 题意概要:给出两条竖直直线,再给出 \(n\) 架飞机的初始航线:一条接通这两条直线的线段,保证航线交点不在两条直线上.现要求安排所有飞机在航线相交处做特技: 擦身而过:两架飞机按原方向线路继续前进,一次得分 \(b\) 对向交换:两架飞机交换线路继续前进,一次得分 \(a\) 另外,给定 \(k\) 个边界与坐标轴成 \(45°\)角 的正方形,若一次特技被至少一个正方形囊括,则总得分加 \(c\) 现要求决策每次相遇做的特技,求最大/最小

BZOJ 2430 Poi2003 Chocolate 贪心

题目大意:给定一个巧克力,怎么切看题目吧我实在写不动了= = 首先每条线被切至少一次 在此基础上一条线每被切一次就多付出一份代价 故每个交叉点上用权值较大的线切权值较小的线比较优 说白了就是大的先切然后小的后切 贪心的证明我说不明白了大家意会吧QAQ 一天之内写了整整十道题也是够受的了QAQ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #defin

[bzoj 2460]线性基+贪心

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2460 网上很多题目都没说这个题目的证明,只说了贪心策略,我比较愚钝,在大神眼里的显然的策略还是想证明一下才安心--所以这里记录一下证明过程. 贪心策略:按魔力值从大到小排序,从大往小往线性基里插,如果成功插入新元素,就选这个,如果插不进去,就不选这个. 证明: 设有n个材料,每个材料的属性值是x[1],x[2],...,x[n],魔力值是v[1],v[2],...,v[n],这里假设v已

BZOJ 2460: [BeiJing2011]元素 贪心,线性基

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2460 解法:从大到小排序,依次贪心的添加到当前集合就可以了,需要动态维护线性基.用拟阵证明,线性基性质,线性基中任意子集异或和不为0,所以从大到小加入就好. #include <bits/stdc++.h> using namespace std; typedef long long LL; struct node{ LL a, b; node(){} bool operator<

BZOJ 1293: [SCOI2009]生日礼物 贪心

1293: [SCOI2009]生日礼物 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2513  Solved: 1370[Submit][Status][Discuss] Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠,但多个彩珠也可以出现在同一个位置上. 小布生日快到了,于是小西打算剪一段彩带送给小