Lecture Sleep(尺取+前缀和)
Description
Input
Output
只打印一个整数 - 只用一次技巧来唤醒Mishka,他可以记下的定理的最大数量。
Sample Input
Input
6 3
1 3 5 2 5 4
1 1 0 1 0 0
Output
16
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int n,k,sum=,tmp=,ans=-,x,j,i;
int a[];
int vis[];
scanf("%d%d",&n,&k);
for(i=;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=;i<n;i++)
{
scanf("%d",&vis[i]);
if(vis[i])///只要是醒着的时候都能记住定理
{
sum=sum+a[i];
}
}
for(i=;i<k;i++)
{
if(!vis[i])
{
tmp=tmp+a[i];///tmp储存的是使用某种方法之后能记住的定理的增量
}
}
i=;
j=i+k-;///以使用某种方法的作用时间作为尺取的尺度
while()
{
ans=max(ans,sum+tmp);
if(!vis[i])
{
tmp=tmp-a[i];
}
i++;
j++;
if(j==n)///尺取到头就要终止遍历
{
break;
}
if(!vis[j])
{
tmp=tmp+a[j];
}
}
printf("%d\n",ans);
return ;
}
前缀和的方法
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int a[];
int vis[];
int sum[];
int per[];
int main()
{
int n,k,i,j,maxt;
int x,y,z;
scanf("%d%d",&n,&k);
for(i=; i<=n; i++)
{
scanf("%d",&a[i]);
sum[i]=sum[i-]+a[i];///sum储存的是前i项老师讲的定理和
}
for(i=; i<=n; i++)
{
scanf("%d",&vis[i]);
if(vis[i])
{
per[i]=per[i-]+a[i];///per储存的是前i项mishka听到的定理和
}
else
{
per[i]=per[i-];
}
}
maxt=;
for(i=; i<=n-k+; i++)
{
x=per[i-];///之前听到的定理
y=sum[i+k-]-sum[i-];///中间老师讲到的定理,在这里可以使用某一种方法,使得可以听到老师所讲的内容
z=per[n]-per[i+k-];///后面听到的定理
maxt=max(maxt,x+y+z);
}
printf("%d\n",maxt);
return ;
}
看到一个大神有更为优化的前缀和的方法
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int a[];
int main()
{
int n,k,i,j,maxt,ans,b;
int x,y,z;
scanf("%d%d",&n,&k);
ans=;
maxt=;
for(i=; i<=n; i++)
{
scanf("%d",&a[i]);
}
for(i=; i<=n; i++)
{
scanf("%d",&b);
if(b)
{
ans=ans+a[i];///ans里面储存的是上课能听到的所有定理
a[i]=;///听到了的重置为0
}
a[i]=a[i-]+a[i];///a[i]///里面储存的是前i项上课没有听到的
}
for(i=k; i<=n; i++)
{
maxt=max(maxt,a[i]-a[i-k]);
}
printf("%d\n",maxt+ans);
return ;
}
Lecture Sleep(尺取+前缀和)的更多相关文章
- Intense Heat(前缀和或尺取)
The heat during the last few days has been really intense. Scientists from all over the Berland stud ...
- poj2566尺取变形
Signals of most probably extra-terrestrial origin have been received and digitalized by The Aeronaut ...
- POJ3061 Subsequence 尺取or二分
Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...
- Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot 【二分 + 尺取】
任意门:http://codeforces.com/contest/1073/problem/C C. Vasya and Robot time limit per test 1 second mem ...
- POJ:2566-Bound Found(尺取变形好题)
Bound Found Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5408 Accepted: 1735 Special J ...
- 2018亚洲区预选赛北京赛站网络赛 D.80 Days 尺取
题面 题意:你带着K元要去n个城市,这n个城市是环形的,你可以选择任意一个起点,然后顺时针走,对于每个城市,到达时可以获得a元,但是从这里离开又需要花费b元,问你能否找到一个起点(输出花钱最少的那个) ...
- POJ-3061 Subsequence 二分或尺取
题面 题意:给你一个长度为n(n<100000)的数组,让你找到一个最短的连续子序列,使得子序列的和>=m (m<1e9) 题解: 1 显然我们我们可以二分答案,然后利用前缀和判断 ...
- Gym 101257G:24(尺取)
http://codeforces.com/gym/101257/problem/GGym 101257G 题意:给出n个人,和一个数s,接下来给出每个人当前的分数和输掉的概率.当一个人输了之后就会掉 ...
- Codeforces - 1191E - Tokitsukaze and Duel - 博弈论 - 尺取
https://codeforc.es/contest/1191/problem/E 参考自:http://www.mamicode.com/info-detail-2726030.html 和官方题 ...
随机推荐
- 32位ubuntu16.04桌面版系统安装
1.下载并安装UltraISO软件安装之后插入U盘 2.然后打开软件点击文件打开找到下载的Ubuntu的ISO文件双击打开完成ISO文件的加载 3.点击启动选项(记得点开加载后的镜像,使之展开如图) ...
- Jquery之倒计时计算
setInterval(); function setDate(setTime){ var date = new Date();//获取系统当前时间 )+)+"-"+date. ...
- 关于NPOI导出excel文件(xls和xlsx两种格式)提示格式不符的问题
这两天在做导出excel文件的时候遇到这个问题 本来我导出的格式是xlsx格式的,但是下载得到的文件格式变成了xls, 一开始以为是返回的contenttype设置错了 return File(ms, ...
- Hive(6)-DML数据操作
一. 数据导入 1. 语法 load data [local] inpath 'path' [overwrite] into table table_name [partition (partcol1 ...
- 定义一个大数组时,出现错误,程序进入HardFault_Handler中断
在原子的串口程序前加了几个数组定义,加了个对数组处理的函数,出现了HardFault_Handler的错误,不知道怎么解决!!! 因为局部变量是存放在栈区的,而全局变量在全局区(静态区),如果栈区较小 ...
- 『Python基础-8』列表
『Python基础-8』列表 1. 列表的基本概念 列表让你能够在一个地方存储成组的信息,其中可以只包含几个 元素,也可以包含数百万个元素. 列表由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...
- Python学习手册之字符类和元字符深入
在上一篇文章中,我们介绍了 Python 的正则表达式和元字符,现在我们介绍 Python 的字符类和对元字符进行深入讲解.查看上一篇文章请点击:https://www.cnblogs.com/dus ...
- linux运维视频教程
视频教程:https://www.bilibili.com/video/av31023006/?p=2 1.文件系统 文件系统树形结构: 对于linux系统的user和application来说,并不 ...
- HyperLedger Fabric 1.4 单机单节点部署(10.2)
单机单节点指在一台电脑上部署一个排序(Orderer)服务.一个组织(Org1),一个节点(Peer,属于Org1),然后运行官方案例中的example02智能合约例子,实现转财交易和查询功能.单机单 ...
- 引用ZXing生成二维码
1.生成二维码 ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口. Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.本文引用 ...