题目链接

题目大意

给你一个长为n的数组前(n+1)/2个数为a[i],后面的数为x,让你求出一个长度k使其所有连续为k的数组之和都大于0

题目思路

首先要找性质,如果k满足,那么显然k*2也满足那么以此类推,可以发现只要存在那么就可以找到一个k>n/2的数。

接下来分类讨论

当x>=0,显然只要看pre[n]是不是大于0即可
当x<0,肯定这个k>n/2,然后推一下就行了

代码

#include<map>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
const int maxn=5e5+5,inf=0x3f3f3f3f;
using namespace std;
typedef long long ll;
int n,x,a[maxn],pos[maxn];
ll pre[maxn];
int main(){scanf("%d",&n);for(int i=1;i<=(n+1)/2;i++){scanf("%d",&a[i]);pre[i]=pre[i-1]+a[i];}scanf("%d",&x);for(int i=(n+1)/2+1;i<=n;i++){a[i]=x;pre[i]=pre[i-1]+a[i];}if(x>=0){if(pre[n]>0){printf("%d\n",n);}else{printf("-1\n");}}else{int len=inf;for(int i=1;i<=(n+1)/2;i++){//起点ll cha=pre[(n+1)/2]-pre[i-1];if(cha>=0){pos[i]=min((n+1)/2+cha/(-x)-(cha%(-x)==0),1ll*n);}else{printf("-1");break;}//pos[i]表示i-pos[i]的值大于0len=min(len,pos[i]-i+1);if(i+len-1>=n){//到达了nprintf("%d\n",len);break;}if(i==(n+1)/2){//没有break则输出-1printf("-1\n");break;}}}return 0;
}

Codeforces Round #645 (Div. 2) E - Are You Fired? 题解(思维)相关推荐

  1. Codeforces Round #645 (Div. 2) D - The Best Vacation 题解(二分+思维)

    题目链接 题目大意 一年有n个月,每个月有d[i]天,让你找出连续x天,使其日期的总和最大,可以跨年 题目思路 这里要发现一个性质:即连续的x天一定满足最后一天在月份的结尾,结论是显然的. 然后用两个 ...

  2. codeforces Round #645 (Div. 2)D题解

    Codeforces Round #645 (Div. 2)--D题解 作为一名菜鸡,理所当然得没有A出来,这道题数据放小就一水题了,可惜数据这块卡的死死的. 本题最重要的一点就是你要推出来一个结论: ...

  3. Codeforces Round #645 (Div. 2) D. The Best Vacation

    Codeforces Round #645 (Div. 2) D. The Best Vacation 题目链接 You've been in love with Coronavirus-chan f ...

  4. 【Codeforces Round #767 (Div. 2)】 C. Meximum Array 题解

    [Codeforces Round #767 (Div. 2) ]C. Meximum Array 题解 1629C: Meximum Array 题解 [Codeforces Round #767 ...

  5. Codeforces Round #732 (Div. 2) C. AquaMoon and Strange Sort 思维

    传送门 文章目录 题意: 思路: 题意: 给你nnn个数,每个数初始方向是向右,每次可以交换相邻两个位置并且将这两个位置的方向调换,问这个序列的最终状态能否是非递减且方向都向右. n≤1e5,ai≤1 ...

  6. Codeforces Round #588 (Div. 2) D. Marcin and Training Camp 思维

    传送门 文章目录 题意: 思路: 题意: 有nnn个人,每个人都有一个能力值bib_ibi​以及他会的技能aia_iai​,当他会第xxx个技能的时候,aia_iai​的第xxx位是111.定义当xx ...

  7. Codeforces Round #727 (Div. 2) E. Game with Cards dp + 思维

    传送门 文章目录 题意: 思路: 题意: 初始有左右手,上面各有一个数字为000的卡牌,每次都有一个新卡kik_iki​,你可以将其放在左手或者右手,使两只手上的卡片范围在[ll,i,rl,i][l_ ...

  8. Codeforces Round #715 (Div. 1) C. Complete the MST 补图 + 思维 + 最小生成树

    传送门 文章目录 题意: 思路 题意: 给你一张nnn个点mmm个边的图,mmm条边是给定的,要求你给未给定的边赋值一个边权,使得所有边权异或和为000,求所有满足这种情况的图中最小生成树边权和最小的 ...

  9. Codeforces Round #632 (Div. 2) C. Eugene and an array 思维 + 前缀和

    传送门 文章目录 题意: 思路: 题意: 给定一个长度为nnn的序列aaa,定义一段区间为好区间是这段区间的所有连续子区间的和都不为000,求好区间的个数. 思路: 套路题,定义aia_iai​的前缀 ...

最新文章

  1. 基本控件HyperlinkButton控件
  2. Android Studio安卓开发中使用json来作为网络数据传输格式
  3. 子div在父div中置底
  4. 12.1 Bootstrap介绍
  5. 【Python】利用graphviz和pycallgraph库自动生成Python函数调用关系图
  6. 深度学习之 Cascade R-CNN
  7. 使用C++生成条形码
  8. 各种数据集汇总——转载而来
  9. java制作oa审批流程,传智播客JAVA培训OA项目 审批流转模块
  10. 【web】自定义协议Protocol URL
  11. 开心网刷分程序详解以及web游戏破解思路分析(一)
  12. 2021中国开源优秀人物榜出炉!
  13. 如何让孩子算20以内的加法更快
  14. wetool 接入图灵机器人_wetool企业版wetool支持微信版本-免费版
  15. Python利用selenium简单的爬取网易云歌曲排行榜
  16. linux系统日志怎么退出,linux系统日志的清除
  17. 腾讯游戏助手运行闪退日志查看
  18. 再说不会用python计算地球表面多边形面积,可不能了!(记录五种可行方法)
  19. Spark RDD的宽依赖和窄依赖
  20. 二进制空间权重矩阵_空间权重矩阵(SWM)

热门文章

  1. 打开地图文档,发现数据消失了怎么办?
  2. sqlplus连接数据库的几种方式
  3. 正则表达式获取CPU的核数信息
  4. 数据库转换工具 spoon使用
  5. vue阻止鼠标滚轮事件
  6. VMware 7.0安装教程
  7. 上海城建职业学院计算机应用技术交流群,上海城建职业学院学生转专业资格初审通过情况汇总表.PDF...
  8. html 图片加锚点,html中锚点的实现
  9. 小程序插件引入(地铁图/路线规划/地图选点/城市选择器)
  10. Revit中图元不可见怎么办?插件太多怎么办?