题目大概说手机有n张照片。通过左滑或者右滑循环切换照片,滑动需要花费a时间;看一张照片要1时间,而看过的可以马上跳过不用花时间,没看过的不能跳过;有些照片要横着看,要花b时间旋转方向。那么问T时间下最多可以看多少张相片。

先确定左滑最多能看到哪张,然后用另一个指针从第一张照片往右移动,这代表先右滑然后左滑的方式看照片,而每次向右的指针移动计算其时间,不合法的话就通过向左的指针向右移修正时间;

而先左滑然后右滑的方式同理。

模拟题,好难写。。不过写好后提交居然就1A了。。

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char str[];
bool vis[];
int main(){
int n,a,b,T;
scanf("%d%d%d%d",&n,&a,&b,&T);
scanf("%s",str); int i=,j=,ans=;
int t=T,cnt=;
while(j<n){
if(str[j]=='w') t-=b;
--t;
if(t<) break;
++cnt;
t-=a;
++j;
}
if(cnt==){
putchar('');
return ;
}
ans=max(ans,cnt);
t=T;
for(int k=; k<cnt; ++k){
if(str[k]=='w') t-=b;
--t;
if(k!=cnt-) t-=a;
vis[k]=;
}
j=cnt-;
while(true){
if(--i==-) i=n-;
if(vis[i]) break;
t-=a;
if(str[i]=='w') t-=b;
--t;
t-=a;
while(t< && j> && vis[j]){
t+=a;
if(str[j]=='w') t+=b;
++t;
--cnt;
vis[j]=;
--j;
}
if(t<) break;
++cnt;
ans=max(ans,cnt);
} memset(vis,,sizeof(vis));
i=; j=;
t=T; cnt=;
while(cnt<n){
if(str[i]=='w') t-=b;
--t;
if(t<) break;
++cnt;
t-=a;
if(--i==-) i=n-;
} ans=max(ans,cnt);
t=T;
for(int k=,tmp=; k<cnt; ++k){
if(str[tmp]=='w') t-=b;
--t;
if(k!=cnt-) t-=a;
vis[tmp]=;
if(--tmp==-) tmp=n-;
}
if(++i==n) i=;
while(true){
if(++j==n) j=;
if(vis[j]) break;
t-=a;
if(str[j]=='w') t-=b;
--t;
t-=a;
while(t< && i && vis[i]){
t+=a;
if(str[i]=='w') t+=b;
++t;
--cnt;
vis[i]=;
if(++i==n) i=;
}
if(t<) break;
++cnt;
ans=max(ans,cnt);
} printf("%d",ans);
return ;
}

Codeforces 650B Image Preview(尺取法)的更多相关文章

  1. Codeforces 958F2 Lightsabers (medium) 尺取法

    题目大意: 输入n,m,分别表示人的个数和颜色的个数,下一行输入n个数,对应每个人的颜色,最后一行输入对应每个颜色的人应有的数量: 问是否能找出一个区间,满足条件但有多余的人,输出多余的人最少的个数, ...

  2. codeforces 650B . Image Preview 二分

    题目链接 B. Image Preview time limit per test 1 second memory limit per test 256 megabytes input standar ...

  3. Codeforces 650B Image Preview

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  4. Codeforces Educational Codeforces Round 5 D. Longest k-Good Segment 尺取法

    D. Longest k-Good Segment 题目连接: http://www.codeforces.com/contest/616/problem/D Description The arra ...

  5. Codeforces Round #364 (Div.2) C:They Are Everywhere(双指针/尺取法)

    题目链接: http://codeforces.com/contest/701/problem/C 题意: 给出一个长度为n的字符串,要我们找出最小的子字符串包含所有的不同字符. 分析: 1.尺取法, ...

  6. Codeforces Round #354 (Div. 2)_Vasya and String(尺取法)

    题目连接:http://codeforces.com/contest/676/problem/C 题意:一串字符串,最多改变k次,求最大的相同子串 题解:很明显直接尺取法 #include<cs ...

  7. codeforces 814 C. An impassioned circulation of affection 【尺取法 or DP】

    //yy:因为这题多组数据,DP预处理存储状态比每次尺取快多了,但是我更喜欢这个尺取的思想. 题目链接:codeforces 814 C. An impassioned circulation of ...

  8. Codeforces 676C Vasya and String(尺取法)

    题目大概说给一个由a和b组成的字符串,最多能改变其中的k个字符,问通过改变能得到的最长连续且相同的字符串是多长. 用尺取法,改变成a和改变成b分别做一次:双指针i和j,j不停++,然后如果遇到需要改变 ...

  9. CodeForces 701C They Are Everywhere 尺取法

    简单的尺取法…… 先找到右边界 然后在已经有了所有字母后减小左边界…… 不断优化最短区间就好了~ #include<stdio.h> #include<string.h> #d ...

随机推荐

  1. MVC控制下输出图片、javascript与json格式

    /// <summary> /// 输出图片 /// </summary> /// <returns></returns> public ActionR ...

  2. Java集合源码学习(三)LinkedList分析

    前面学习了ArrayList的源码,数组是顺序存储结构,存储区间是连续的,占用内存严重,故空间复杂度很大.但数组的二分查找时间复杂度小,为O(1),数组的特点是寻址容易,插入和删除困难.今天学习另外的 ...

  3. ODATA WEB API(一)---扩展使用

    一.概述 时间也算充足,抽点时间总结下OData的常用的使用方式,开放数据协议(OData)是一个查询和更新数据的Web协议.OData应用了web技术如HTTP.Atom发布协议(AtomPub)和 ...

  4. 如何学习FPGA?FPGA学习必备的基础知识

    如何学习FPGA?FPGA学习必备的基础知识 时间:2013-08-12 来源:eepw 作者: 关键字:FPGA   基础知识       FPGA已成为现今的技术热点之一,无论学生还是工程师都希望 ...

  5. 如何更快的删除String中的空格[未完]

      背景:此文章主要源于网址[1]所描述的,文中大部分方法亦是[1]中实现的. 下面介绍集中删除空格的方法: 方法1:按空格分割后再拼接 /// <summary> /// 按空格分割后拼 ...

  6. WPF之MVVM(Step2)——自己实现DelegateCommand:ICommand

    在自己实现MVVM时,上一篇的实现方式基本是不用,因其对于命令的处理不够方便,没写一个命令都需要另加一个Command的类.此篇主要介绍DelegateCommand来解决上面所遇到的问题. 首先,我 ...

  7. 制作U盘启动系统盘

    下载ULtraISO,安装之后,先打开一个iso系统文件,然后选中菜单“启动”下的“写入硬盘映像”

  8. Codeforces Round #130 (Div. 2) C. Police Station

    题目链接:http://codeforces.com/contest/208/problem/C 思路:题目要求的是经过1~N的最短路上的某个点的路径数 /  最短路的条数的最大值.一开始我是用spf ...

  9. Arduino101学习笔记(九)—— 中断函数

    1.设置中断函数 //***************************************************************************************** ...

  10. Hibernate 和 快照

    Hibernate我们已经学了四天,该讲的知识我们已经讲完,明天放假,后天练习一天就要结束hibernate的学习,有点不舍的,想来hibernate也不是传说中的那么难,在次将hibernate中三 ...