CF1091F New Year and the Mallard Expedition
题目地址:CF1091F New Year and the Mallard Expedition
题意比较复杂,整理一下:
\(n\) 段,每段有两个属性:长度,地形(G,W,L)
有三种运动方式:
1.游泳:W,3m/s,+1
2.走路:G,5m/s,+1
3.飞行:G,W,L,1m/s,-1
思路:贪心
需要解决两个问题:
1、遇到L时没体力飞行
解决的方法很简单:在之前的某个地方向后游泳或走路半米,再向前半米,这样可以+1
显然,游泳比走路更优,因此我们在第一次遇到W时完成所需的所有+1
当然,如果在此之前没有遇到W,则只能走路来+1
2、最后剩下部分体力
解决的方法也很简单:尽可能的将之前的运动用飞行代替,优先代替走路
注意,代替一次将会-2,同时也不能过早的代替以防止体力耗尽的情况发生
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 100006;
ll a[N];
string s;
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) scanf("%lld", &a[i]);
cin >> s;
bool flag = 0;
ll ans = 0, k = 0, num = 0;
for (int i = 0; i < n; i++) {
if (s[i] == 'W') {
flag = 1;
k += a[i];
ans += 3 * a[i];
} else if (s[i] == 'G') {
k += a[i];
ans += 5 * a[i];
num += (a[i] << 1);
} else {
ans += a[i];
k -= a[i];
if (k < 0) {
ans -= k * (flag ? 3 : 5);
k = 0;
}
}
num = min(num, k);
}
if (k > 0) ans -= (num << 1) + (k - num);
cout << ans << endl;
return 0;
}
CF1091F New Year and the Mallard Expedition的更多相关文章
- Good Bye 2018 (A~F, H)
目录 Codeforces 1091 A.New Year and the Christmas Ornament B.New Year and the Treasure Geolocation C.N ...
- Codeforces 1091 Good Bye 2018
占个坑先,希望不要掉的太惨了吧,不要掉到上一次之前的rating upt:flag竟然没到,开心. A - New Year and the Christmas Ornament 好像没什么可说的. ...
- Codeforces Good Bye 2018
咕bye 2018,因为我这场又咕咕咕了 无谓地感慨一句:时间过得真快啊(有毒 A.New Year and the Christmas Ornament 分类讨论后等差数列求和 又在凑字数了 #in ...
- POJ 2431 Expedition(优先队列、贪心)
题目链接: 传送门 Expedition Time Limit: 1000MS Memory Limit: 65536K 题目描述 驾驶一辆卡车行驶L单位距离.最开始有P单位的汽油.卡车每开1 ...
- POJ 2431 Expedition(探险)
POJ 2431 Expedition(探险) Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] A group of co ...
- poj 2431 Expedition
Expedition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12980 Accepted: 3705 Descr ...
- POJ 2431 Expedition (STL 优先权队列)
Expedition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8053 Accepted: 2359 Descri ...
- Expedition(优先队列)
Expedition 点我 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9465 Accepted: 2760 Des ...
- poj 3431 Expedition 优先队列
poj 3431 Expedition 优先队列 题目链接: http://poj.org/problem?id=2431 思路: 优先队列.对于一段能够达到的距离,优先选择其中能够加油最多的站点,这 ...
随机推荐
- 安装Redis 4.0单实例
一.Redis简单介绍 转载于网络 Redis是一个开源(BSD许可)的内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.由于Redis采用运行在内存中的数据集工作方式,其性能卓越,能支持 ...
- 使用property为类中的数据添加行为
对于面向对象编程特别重要的是,关注行为和数据的分离. 在这之前,先来讨论一些“坏”的面向对象理论,这些都告诉我们绝不要直接访问属性(如Java): class Color: def __init__( ...
- 最接近原点的K个点
一.题目描述 我们有一个由平面上的点组成的列表 points.需要从中找出 K 个距离原点 (0, 0) 最近的点 这里,平面上两点之间的距离是欧几里德距离 你可以按任何顺序返回答案.除了点坐标的顺序 ...
- Java Web之Http协议
为什么会出现HTTP协议?有什么用? 浏览器和服务器之间进行数据的沟通的时候,需要标准,浏览器有Chrome浏览器,火狐浏览器,IE浏览器等.服务器有Tomcat服务器,IIS服务器等,由于各自标准不 ...
- 剑指offer面试题4: 二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- python模块之collections random
collections 在内置数据类型(list, dict, tuple, set)的基础上,collections提供了几个额外的数据类型: Counter, deque, Orderdict, ...
- system.net.webexception远程服务器返回了错误: NotFound。
Not Found类的错误主要是由于网络服务访问出错.所以需要分析是由哪个网络服务访问失败而导致的. DataAccessSilverlight.PowerDataServiceReference.G ...
- Ubuntu Server Download
点击查看所有版本(中国站点) http://mirror.lzu.edu.cn/ubuntu-releases/
- MySQL Connector 编程
MySQL Connector 是MySQL数据库客户端编程的接口, 它提供了通过网络访问数据库的接口, 这些功能在动态链接库(.dll, .so)或者静态对象库(.lib, .a)中实现. 使用时必 ...
- jquery 禁止滚动条滚动,并且滚动条不消失,页面大小不闪动
一,禁止滚动,滚动条不消失,页面大小不闪动 //禁止滚动条滚动 function unScroll() { var top = $(document).scrollTop(); $(document) ...