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 和官方题 ...
随机推荐
- Zabbix——设置报警阈值
前提条件: 1. Zabbix-server 版本为4.0 2.邮件告警正常使用 3. 阈值改为1分钟进行邮件发送 点击: 找到agent,点击触发器: 设置网络ping包进行检测
- js实现99乘法表的编写(双层for循环与递归方法)
双层for循环实现方法: function nine (num) { ; i <= num; i++){ var str = ''; ; k <= num; k++){ if(i > ...
- Spring security学习笔记(二)
对比两种承载认证信息的方式: session vs token token验证方案: session验证方案: session即会话是将用户信息保存在服务端,根据请求携带的session_id,从服务 ...
- windows下nginx的安装
一. 下载 http://nginx.org/ (下载后解压) 二. 修改配置文件 nginx配置文件在 nginx-1.8.0\conf\nginx.conf http { gzip on; ...
- 第6章 AOP与全局异常处理6.1-6.4 慕课网微信小程序开发学习笔记
第6章 AOP与全局异常处理 https://coding.imooc.com/learn/list/97.html 目录: 第6章 AOP与全局异常处理6-1 正确理解异常处理流程 13:236-2 ...
- hive 查看表结构和属性
1.查看数据库/表 show databases/tables; 2.切换数据库 use database_name; 3.查看表结构 desc table_name; 4.查看表详细属性 desc ...
- Rsync+inotify实现文件实时同步#附shell脚本
强烈推荐先仔细看此文 https://segmentfault.com/a/1190000002427568 实验环境 centos 7.3 vm2:192.168.221.128 同步服务器 vm1 ...
- python学习——模块和包
在之前常用模块中我们已经初步了解了模块的导入,今天来说学习一下模块和包.我们可以把模块理解成每一个python文件.而包就是多个能解决一类问题的python文件全部放在一起.OK
- linux chrom 系统无法读取用户偏好配置无需删除.config配置文件
鬼使神差的使用了root权限启用了一下浏览器,再次打开就出现了这样的状况. 百度搜索了一下解决方案 几乎都是同一篇 需要删除/.config/google-chrome文件 才能正常启动. 那么如 ...
- 使用bison和yacc制作脚本语言(2)
我们先来想一下语法 一般脚本语言不需要定义类型直接在赋值的时候确定 我们主要考虑一下变量的类型 a = 1; b = 1.1; c = "str"; 一般来讲,我们使用这三种类型, ...