题目链接:http://codeforces.com/problemset/problem/355/C

题意:

给定n个杠铃的重量,问把所有杠铃举一次需要的最小能量

1、每次只能举最左边或最右边的一个杠铃

2、举一个杠铃可以用左手或右手,花费为 wi * l (wi*r)

3、若这次用左手,上次也是用左手,则要多花费 Ql 的能量。若连续用右手则要多花费Qr

显然我们最后会举一个杠铃,设为 i

则举[1,i-1]的杠铃都是用左手, 举[i+1, n]的都是用右手,则这里花费的基础能量可以用前缀和求出

而对于 第i个,我们分为

1、用左手举

2、用右手举

则此时基础能量已经确定,为了使得花费最小,则连续使用一只手的情况要尽可能小,显然是交替使用最少

暴力枚举最后举第i个杠铃 和 用左手还是右手举这个杠铃即可

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <math.h>
#include <set>
#include <vector>
#include <queue>
using namespace std;
#define N 100005
#define ll __int64
#define eps 1e-7
#define inf 1029385391204938
bool equ(double x, double y=0.0){return ((x-y>0)?x-y:y-x)<eps;}
ll n, m;
ll l, r, ql, qr;
ll a[N];
ll sum[2][N];
ll Sum(ll cur, ll x, ll y){return sum[cur][y]-sum[cur][x-1];}
int main(){ll i, j, k, d;while(~scanf("%I64d %I64d %I64d %I64d %i64d",&n, &l,&r,&ql,&qr)){memset(sum, 0, sizeof sum);for(i = 1; i <= n; i++)scanf("%I64d",&a[i]);for(i = 1; i <= n; i++){sum[0][i] = a[i]*l;sum[1][i] = a[i]*r;}for(i = 1; i <= n; i++){sum[0][i] += sum[0][i-1];sum[1][i] += sum[1][i-1];}ll ans = inf;for(i = 1; i <= n; i++){ll now = 0;//对于这个点 左手举起now += Sum(0, 1, i);now += Sum(1,i+1, n);ll lt = i, rt = n-i;if(lt>rt)lt-=rt, rt=0;else rt-=lt, lt = 0;if(lt)lt--; else if(rt)rt--;now += lt*ql + rt*qr;ans = min(ans, now);}for(i = 1; i <= n; i++){ll now = 0;//对于这个点 左手举起now += Sum(0, 1, i-1);now += Sum(1,i, n);ll lt = i-1, rt = n-i+1;if(lt>rt)lt-=rt, rt=0;else rt-=lt, lt = 0;if(lt)lt--; else if(rt)rt--;now += lt*ql + rt*qr;ans = min(ans, now);}printf("%I64d\n",ans);}return 0;
}
/*
3 4 4 19 1
42 3 994 7 2 3 9
1 2 3 4*/

Codeforces 355C 策略题相关推荐

  1. Codeforces科学刷题指南,一图一表便够了

    简要介绍如何科学地刷算法题,来提高自己解决问题的能力,并利用爬虫抓取Codeforces的题库,来分析题目难度以及算法分类的关系 无论做什么事,多尝试.找套路.然后刻意练习都是至关重要的.对信息科学竞 ...

  2. Codeforces科学刷题指南

    简要介绍如何科学地刷算法题,来提高自己解决问题的能力,并利用爬虫抓取Codeforces的题库,来分析题目难度以及算法分类的关系 无论做什么事,多尝试.找套路.然后刻意练习都是至关重要的.对信息科学竞 ...

  3. codeforces 1041a(水题)

    http://codeforces.com/problemset/problem/1041/A(题目链接) There was an electronic store heist last night ...

  4. codeforces - 1315C - 思维题

    原题链接:https://codeforces.com/problemset/problem/1315/C 翻译: 这是一个猜谜游戏,你需要猜中一个序列,谜题是一个序列,我们设为b,长度为n.你需要根 ...

  5. codeforces #261 C题 Pashmak and Buses(瞎搞)

    题目地址:http://codeforces.com/contest/459/problem/C C. Pashmak and Buses time limit per test 1 second m ...

  6. codeforces每日5题(均1500)-第十三天

    Case of Matryoshkas 题面翻译 这是一套有n个娃娃的套娃,由1到n依次编号.编号小的娃娃可以放进编号大的娃娃里面,但是不能平行的放入两个娃娃,即套娃在嵌套放置的时候只能一个套一个例如 ...

  7. codeforces 数论分析题

    题目:http://codeforces.com/contest/359/problem/C 题意:给一个素数x和一个长度为n的数列a[],求的分子和分母的最大公约数. 分析:对于分子来说,我们把分子 ...

  8. Minimizing Difference CodeForces - 1244E(贪心题)

    题目 题意 官方题解: 百度翻译 思路 ac代码 题意 给出一列数,至多n个操作使其中的数+1或-1,要求得到最小的差值(最大值-最小值): You are given a sequence a1_{ ...

  9. Codeforces 802 补题

    codeforces802 A-O Helvetic Coding Contest 2017 online mirror  A  Heidi and Library (easy) 水题 同B #inc ...

最新文章

  1. Redis源码解析——字典基本操作
  2. 网页调用本地播放器的代码支持ie,chroome, 火狐不支持
  3. 国服被ban咋看_王者荣耀:赵云不会玩?完美详细攻略教学,看完助你轻松上王者...
  4. python好学实用吗-都说python很简单 真的很好学么?
  5. unicode 版本 delphi (如XE2)的 TBytes 转换为 AnsiString
  6. Spring OXM-XStream注解
  7. PHP易混淆函数的区分
  8. ssh 与 telnet 有何不同?_Secure Shell(SSH)介绍
  9. 前端那些年--npm
  10. Oracle 控制文件管理
  11. 你为什么不敢重构代码?听高手亲授秘笈!
  12. GPL侵权诉讼被驳回,Linux之父Torvalds又要发飙了!
  13. python xlrd导入后怎么保存_Python xlrd模块导入过程及常用操作
  14. android 获得资源图片,快速获取app(ios和安卓)资源图片
  15. 计算机sci论文怎么写,计算机学院陈端兵教授分享SCI论文写作方法
  16. 深入理解Web Components
  17. 【转】WinCC 6.0 声音报警
  18. Python实现求矩阵的伴随矩阵
  19. 网络营销实战密码——策略、技巧、案例(修订版)
  20. 圆的面积php,圆的面积教学活动方案

热门文章

  1. 蓝桥杯之单片机设计与开发(20)——DS1302
  2. 宝哥面试题分享(16):Git面试题:git常用命令、如何解决版本冲突、git和svn的区别
  3. php直播源码,生成验证码并提交验证
  4. 微信“打飞机”引发的“怪相”
  5. Sonar Qube连续代码质量管理(二)Sonar Qube7.6在Windows环境下安装部署和服务启停
  6. 折弯机使用说明书_MERUGA数控折弯机操作手册
  7. BestCoder Round #29 1003 (hdu 5172) GTY's gay friends [线段树 判不同 预处理 好题]
  8. 判断一个字符串是否是合法IP地址
  9. 基于51单片机音乐盒仿真设计(音乐播放器)
  10. MT523芯片技术资料大全,MT523数据表原理图下载