codeforces 650B - Image Preview

题意:给你n个照片,从第一个照片开始看,如果一张照片是'w',那么要花费b时间去反转他,否则不用反转,看一张从来没看过的照片要1时间, 从一张滑动到另一张要a时间。如果一张照片看过,则不用再反转,也不用再傻1s。求在不超过T时间的前提下最多能看多少张。

思路:首先模拟这个选着过程,这里引入两个指针,lr代表从起点开始从右遍历,ll代表从后遍历到最后一个符合条件的位置,ll到lr之间串如果符合题意则求ans。

注意ll和lr之间一定不超过n。

 1 #include <iostream>
 2 #include <string.h>
 3 #include <stdio.h>
 4 #include <algorithm>
 5 #include <cmath>
 6 #include <cstdlib>
 7 using namespace std;
 8 const double pi=acos(-1);
 9 const int maxn=500010;
10 char str[maxn];
11 int s[2*maxn];//二倍空间:0到n-1是往后遍历,n到2*n-1是往前遍历
12 
13 int main() {
14     int n,a,b,t;
15     while(~scanf("%d%d%d%d",&n,&a,&b,&t)) {
16         scanf("%s",str);
17         int sum=0;
18         for(int i=0; i<n; i++) {
19             if(str[i]=='w')
20                 s[i]=s[i+n]=b+1;
21             else
22                 s[i]=s[i+n]=1;
23             sum+=s[i];
24         }
25         sum-=s[0];
26         int ll=1,lr=n;
27         int ans=0;
28         while(ll<=n&&lr<2*n) {
29             sum+=s[lr++];
30             while(lr-ll>n||sum+(lr-ll-1+min(lr-n-1,n-ll))*a>t) {
31                 sum-=s[ll++];
32             }
33             ans=max(ans,lr-ll);
34         }
35         cout<<ans<<endl;
36     }
37     return 0;
38 }
View Code

 

转载于:https://www.cnblogs.com/ITUPC/p/5337529.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

asp js单步调试_如何使用Chrome的控制台高效的调试Javascript代码?

引言在我们的日常开发中我们常常会遇到JavaScript的调试问题&#xff0c;而我们解决问题的传统解决方案就是使用大量的console.log或者console对象的其他方法&#xff0c;这会给我们带来很多不便&#xff0c;特别是遇到复杂问题的时候&#xff0c;可能会出现大量的console.log&…

安卓App的启动过程、安卓布局分类及布局和页面的关系

Android App 启动流程: 当你想要启动一个app时&#xff0c;首先得点击该app桌面图标。那点击图标时到底发生了什么呢&#xff1f;先看个理论知识 .Launcher: launcher其实就是一个app&#xff0c;从功能上说&#xff0c;是对手机上其他app的一个管理和启动&#xff0c;从代码…

Linux文件默认权限和umask笔记

关于Linux文件默认权限的问题&#xff0c;可以实际先尝试一下如下命令&#xff1a;root用户登录[rootlocalhost test]# touch file1[rootlocalhost test]# ls-l file1-rw-r--r-- 1 root root 0 May 5 08:28 file1 #输出结果 对应的数字权限 644[rootlocalhost test]# touch fi…

Android相对布局(RelativeLayout)常用属性、练习使用按键、文本框等控件、线性布局(LinearLayout)属性

RelativeLayout中子控件常用属性&#xff1a; 子控件默认是从父控件的左上角开始排列的 相对于父控件 android:layout_alignParentTop"true" 和父控件的顶部对齐android:layout_alignParentBottom"true" 和父控件的底部对齐android:layout_alignPar…

Seata AT模式

基本思路 先决条件 支持本地ACID事务的关系数据库。通过JDBC访问数据库的Java应用程序。 整体机制 从两个阶段提交协议的演变&#xff1a; 阶段1&#xff1a;在同一本地事务中提交业务数据和回滚日志&#xff0c;然后释放本地锁和连接资源。阶段2&#xff1a; 对于提交情况…

自媒体各大平台收益对比_哪些自媒体平台没有新手期,适合小白撸收益?

2-26把我设置为星标&#xff0c;不错过每一次的干货&#xff5e;各大自媒体平台的新手期总是让小白们望而却步&#xff0c;特别是百家号审核非常严格&#xff0c;如果没思路、没人指导&#xff0c;过新手有难度。不过&#xff0c;还是有很多平台对新手宝宝很友好&#xff0c;没…

Linux关于文件的权限笔记

1、调整文件的权限命令&#xff1a;chmodLinux的每个文件都定义了文件的拥有者&#xff1a;u(user)、拥有组&#xff1a;g&#xff08;group&#xff09;、其他人&#xff1a;o&#xff08;others&#xff09;权限&#xff0c;对应的权限用rwx的组合来定义。使用chmod命令&…

启动rrt什么意思_python学习第144课--创建虚拟机、设置虚拟机参数以及启动虚拟机...

【每天几分钟&#xff0c;从零入门python编程的世界&#xff01;】上节我们介绍了下载虚拟机以及centOS的相关事项&#xff0c;现在我们创建虚拟机。●创建虚拟机安装好virtualbox之后&#xff0c;我们点击Oracle VM VirtualBox打开管理器&#xff0c;界面如下图&#xff1a;你…

Android按键响应的几种方式、安卓页面的跳转、页面跳转传参、页面自动跳转、Activity(页面)的生命周期

按键响应的第一种方式&#xff1a; 在XML文件里面设置按键的onClick绑定函数。就像下面的代码&#xff0c;给Button设置onClick属性&#xff0c;在按键被按下的时候&#xff0c;会调用java文件里面的onClickbtton1这个函数&#xff0c;因为现已将它和这个按钮进行了绑定。利用…

pycharm体验

查看python版本 退出 exit()

Linux文本检索命令grep笔记

grep是在linux系统中基于行文本非常实用检索工具&#xff0c;通过该命令可以将匹配到的结果信息输出到终端控制台。语法格式&#xff1a;grep [-ivnc] 需要匹配的内容 文件名常用参数说明&#xff1a;-i 检索的时候不区分大小写-c 检索到的匹配行数-n 检索到的匹配行显式具体的…

成立出版社的条件_创始人亲述:法国鸿飞文化出版社的诞生故事和做书心得

鸿飞文化出版社2007年在法国创立&#xff0c;专门出版由中国作家和法国插画师共同创作的图画书。创始人叶俊良引用苏东坡的诗句“人生到处知何似&#xff0c;应似飞鸿踏雪泥。泥上偶然留指爪&#xff0c;鸿飞那复计东西。”为出版社取名&#xff0c;希望通过这些“印迹”为读者…

python单行注释和多行注释

# 后面加一个空格&#xff0c;下面就不会有波浪线了 点击小灯泡下的第一行&#xff0c;可以调整注释格式 多行注释

Linux文件查询笔记

1、数据库查找命令&#xff1a;locateLinux也可以通过locate命令查找文件&#xff0c;locate命令主要是依据一个数据库文件来执行文件的查找&#xff0c;默认情况下Linux每天会默认检索系统中的所有文件&#xff0c;然后把检索的文件信息记录到数据库文件中。因为运行locate命令…

柱坐标系下的ns方程_麦克斯韦方程组小结

一、▽ 算子、点积、叉积l▽ 算子叫“del”算子&#xff0c;即<< span"">∂/∂x,∂/∂y,∂/∂z>,可以理解为一个符号向量&#xff0c;向量里的元素是偏微分运算符号&#xff0c;没有任何具体意义&#xff0c;只是一个表示方法。ln维向量的内积定义如下&a…

Linux进程终止命令kill或killall​笔记

在linux命令下&#xff0c;如果需要终止某个进程&#xff0c;可以使用kill或者killall等命令来实现。终止命令的原理都是向linux内核发送一个系统操作的信号以及某个进程的ID&#xff0c;然后系统内核会根据指定的进程ID进行相应的处理。kill命令典型的用法&#xff1a;首先使用…

Visual Studio的调试技巧

Visual Studio的调试技巧 【原文地址】 Debugging Tips with Visual Studio 2010 【原文发表日期】 2010/8/19 10:48 AM 这是我写的关于VS2010和.Net4发布的博客系列的第26篇。 今天的博文包含了一些有用的能用于VS的调试技巧。 我的朋友 Scott Cate&#xff08;他写了很多很…