• 【BZOJ2697】特技飞行(好久没做过这么水的题了,所以我为何还要水博客)


    点此看题面

    大致题意:(n)个单位时间,每个单位时间可以在(k)个动作中选择一个。一个动作的价值是(这次出现时间-上次出现时间)×这个动作的愉悦值【若一个动作第一次出现则价值为0】。求所能得到价值总和的最大值。

    前言

    做那种高思维强度的题目做得脑壳疼,于是就来做水题轻松一下

    这在洛谷上仅仅是一道(color{green}{绿题})写到这里突然有种颓废般的罪恶感),感觉我是不是已经开始自暴自弃了啊。

    大致思路

    显然,根据它的计算方式,一个动作出现多次的价值其实就等同于只保留首尾两次出现时的价值。

    于是我们就想到把动作按愉悦值从大到小排序,从首尾两侧同时开始摆,直到摆不了为止。然后此时的价值总和就是答案。

    代码

    #include<bits/stdc++.h>
    #define Tp template<typename Ty>
    #define Ts tmeplate<typename Ty,typename... Ar>
    #define Reg register
    #define RI Reg int
    #define Con const
    #define CI Con int&
    #define I inline
    #define W while
    #define K 300
    using namespace std;
    int n,k,a[K+5];I bool cmp(CI x,CI y) {return x>y;}//从大到小排序
    int main()
    {
    	RI i;for(scanf("%d%d",&n,&k),i=1;i<=k;++i) scanf("%d",a+i);
    	RI ans=0;sort(a+1,a+k+1,cmp);
    	for(i=1;i<=min(k,n/2);++i) ans+=a[i]*(n-2*i+1);//从首尾两侧开始摆
    	return printf("%d",ans),0;
    }
    
  • 相关阅读:
    Python 7步机器学习
    STL容器-- map and multimap 用法
    STL容器-- forward_list 用法
    STL容器-- fixed-size array 用法
    STL容器-- deque 用法
    网站502与504错误分析
    git将一个分支的某个文件合并到当前分支
    阿里云RDS上用mysqldump导入导出
    mysqldump具体应用实例
    mysql的导入导出工具mysqldump命令详解
  • 原文地址:https://www.cnblogs.com/chenxiaoran666/p/BZOJ2697.html
Copyright © 2020-2023  润新知