FOJ Problem 2253 Salty Fish

                                                                                                                                                                       Problem 2253 Salty Fish

Accept: 35    Submit: 121
Time Limit: 1000 mSec    Memory Limit : 32768 KB

Problem Description

海边躺着一排咸鱼,一些有梦想的咸鱼成功翻身(然而没有什么卵用),一些则是继续当咸鱼。一个善良的渔夫想要帮这些咸鱼翻身,但是渔夫比较懒,所以只会从某只咸鱼开始,往一个方向,一只只咸鱼翻过去,翻转若干只后就转身离去,深藏功与名。更准确地说,渔夫会选择一个区间[L,R],改变区间内所有咸鱼的状态,至少翻转一只咸鱼。

渔夫离开后想知道如果他采取最优策略,最多有多少只咸鱼成功翻身,但是咸鱼大概有十万条,所以这个问题就交给你了!

Input

 

包含多组测试数据。

每组测试数据的第一行为正整数n,表示咸鱼的数量。

第二行为长n的01串,0表示没有翻身,1表示成功翻身。

 

n≤100000

Output

在渔夫的操作后,成功翻身咸鱼(即1)的最大数量。

Sample Input

5 1 0 0 1 0 3 0 1 0

Sample Output

4 2

Hint

对于第一个样例,翻转区间[2,3],序列变为1 1 1 1 0。

对于第二个样例,翻转整个区间,序列变为1 0 1。 

 

思路:最大连续子区间和问题,考虑两部分,第一:记录好原本的序列中1的个数sum1 第二:现在要反转一个区间,此时对原串修改,0的部分改成1,1的部分改成-1,因为每次反转,原本没翻身的鱼翻身了,则翻身的鱼个数+1,而原本翻身的鱼又变回咸鱼,翻身鱼个数-1,对修改后的串求最大连续子区间和sum2,sum1+sum2即是最优解。当然本题需要注意如果所有鱼本来都是1的状态,则至少需要翻转一条,最佳方案则为n-1.

AC代码:

#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<set>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
const int N_MAX = 100000+50;
int fish[N_MAX],a[N_MAX];
int n;
int main() {while (scanf("%d",&n)!=EOF) {int sum = 0;for (int i = 0; i < n;i++) {scanf("%d",&fish[i]);if (fish[i]) { sum += fish[i], a[i] = -1; }else a[i] = 1;}int sum2 = 0,max_sum=a[0];for (int i = 0; i < n;i++) {if(sum2>0)sum2 += a[i];else sum2 = a[i];max_sum = max(max_sum, sum2);}printf("%d\n",max_sum+sum);}return 0;
}

 

转载于:https://www.cnblogs.com/ZefengYao/p/7192290.html

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

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

相关文章

mysql数据库断电_MySQL 数据库忽然断电会丢数据吗转载

在上一章&#xff0c;我讲解了 MySQL 锁的相关内容。主要谈到了全局锁、表锁、行锁以及死锁等。通过这些学习&#xff0c;相信我们可以理解锁的原理&#xff0c;并在工作中降低锁冲突的概率。这也是优化数据库必须掌握的知识点。从本节开始&#xff0c;将进入一个新的 MySQL 知…

利用云安监控和管理云

云工程师有责任支持组织跨多个云的持续集成、交付、部署系统和管道的持续开发和维护。 一旦工作需要云迁移&#xff0c;他们需要为各种关键业务服务或应用程序提供和协调对云基础设施和云服务的支持。 他们还需要密切关注可能遇到资源限制的系统或不再使用的系统。 用户对云…

Wi-Fi Expert专业无线网测试软件

量化网络在个体用户上体验一直是很困难的工作&#xff0c;而测量无线网络性能的挑战性则更高。因为WLAN环境确实非常复杂&#xff0c;因此真的没有任何一个工具可以一次性测量无线性能的各个方面 通常&#xff0c;网络支持人员能够采用的方法是使用大量的工具尽可能详尽地描绘…

This dependency was not found: * !!vue-style-loader!css-loader?……解决方案

Webstorm2017.1.4 new里找不到vue文件的处理方法 这一篇中说到加的模板是这样的。 但是当你新建一个vue项目时&#xff0c;需要重新安装stylus&#xff0c;否则报错&#xff1a; This dependency was not found: * !!vue-style-loader!css-loader?{"minimize":false…

Windows Server 2008 磐石风暴系列课程

转自电驴下载页面&#xff1a;[url]http://www.verycd.com/topics/251739/[/url]中文名称&#xff1a;Windows Server 2008 磐石风暴系列课程资源类型&#xff1a;ISO发行时间&#xff1a;2007年地区&#xff1a;***语言&#xff1a;普通话简介&#xff1a;*******************…

php一些错误的显示问题

1.当从php4的代码放到php5中跑时莫名的只是有空白&#xff0c;没有任何输出。原因是没有把display_errors打开&#xff0c;可以在php.in里&#xff1a;display_errors on2.notice: undefined variable: bbname in d:\phpnow\vhosts\cmsware.danei.com\cmsware\setting\ubb\ubb…

关于SimpleDateFormat时间转换总是显示1970年的问题

前端传一个时间戳&#xff0c;后端解析的时候 就是这么简单的几句代码。这个值输出的值居然是1970&#xff0c;应该是20081104&#xff0c; 但是为什么返回的是1970了 后面想想发现是时间戳不对 postman请求 修改后的代码 queryBarnSwallowDto.getGraduateDate()替换成自己的…

xul 创建一个按钮

MDN Mozilla 产品与私有技术 Mozilla 私有技术 XUL Toolbars 添加工具栏按钮 (定制工具栏)添加工具栏按钮 (定制工具栏) 在本文章中创建一个 overlay在工具栏添加按钮为按键应用风格图标大小CSS 样式表应用样式表常见错误常见工具栏的 overlayed windows更多信息此文…

MySQL预读失效_华为云MySQL新增“逻辑预读”特性,轻松解决线性预读失效问题...

随着用户对数据访问速度的日益重视,MySQL数据库在最初的设计中,采用了线性预读的方式,提前将即将使用的数据预读到Buffer pool中,来提升数据的访问速度,但在实际使用过程中,线性预读失效的问题愈来愈突出。对于存在时间比较长,变更又比较频繁,除非我们对于这张表进行重建,否则该…

mysql交叉连接插入_25.MySQL中的交叉连接CROSS JOIN

1.简介交叉连接返回的结果是被连接的两个表中所有数据行的笛卡尔积。需要注意的是&#xff0c;交叉连接产生的结果是笛卡尔积&#xff0c;并没有实际应用的意义。例如&#xff0c;班级表中有3个字段&#xff0c;4条记录&#xff0c;学生表中有5个字段&#xff0c;10条记录&…

Mac下的Parallel Windows忘记密码怎么办?

由于工作或是生活&#xff0c;在国内的环境下我们总有些时候要用到Windows才能完成某些任务&#xff0c;对于不经常使用Windows的用户&#xff0c;相信在虚拟机上安装一个Windows是不错的选择。小编就使用了Paralles Desktop安装了 Win 7 系统。但是在使用过程中由于不知道是Wi…

我想自学Linux,需要从哪些方面学起

各位大哥&#xff0c;我想我想自学Linux&#xff0c;需要怎么学起&#xff0c;怎么更快上手&#xff0c;谢谢指导转载于:https://blog.51cto.com/allenxiao/83768

Unity shader学习之Grab Pass实现玻璃效果

GrabPass可将当前屏幕的图像绘制在一张纹理中&#xff0c;可用来实现玻璃效果。 转载请注明出处&#xff1a;http://www.cnblogs.com/jietian331/p/7201324.html shader如下&#xff1a; // Upgrade NOTE: replaced mul(UNITY_MATRIX_MVP,*) with UnityObjectToClipPos(*)Shade…

ef core mysql 生成迁移失败_EFCore + MySql codeFirst 迁移 Migration出现的问题

第二次使用Migration update-database的时候出现以下错误&#xff1a;System.NotImplementedException: The method or operation is not implemented. at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(RenameColumnOperation operation, IModel…

盖茨的背后:坚持到最后一分钟

微软董事长比尔•盖茨(Bill Gates)退休了&#xff0c;离开了他一手创办的微软公司。近期有关盖茨退休并将其580亿美元的财富用于慈善事业成了业内议论和关注的焦点。有的表示敬重&#xff0c;有的表示怀疑&#xff0c;有的甚至为人家盖茨这580亿美元怎么花做了详细的规划&#…

mysql架构 视频_企业常见MySQL架构应用实战(高可用集群系统+调优经验)视频课程...

第一章 MySQL企业常用架构应用实战(主从复制性能调优)1、企业级MySQL发行版Percona Server、MariaDB选型2、常用MYSQL性能调优策略之系统级别调优(1)3、常用MYSQL性能调优策略之系统级别调优(2)4、常用MYSQL性能调优策略之MySQL参数调优(1)5、常用MYSQL性能调优策略之MySQL参数…

Rsync:一个很实用的文件同步命令

rsync是Linux系统下的文件同步和数据传输工具&#xff0c;可用于同步文件、代码发布 1.安装. yum insatll -y rsync 2.配置 打开rsync功能vim /etc/xinetd.d/rsync service rsync {disable no #把yes改成noflags IPv6socket_type streamwait n…