Codeforces Round #645 (Div. 2) E - Are You Fired? 题解(思维)
题目链接
题目大意
给你一个长为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? 题解(思维)相关推荐
- Codeforces Round #645 (Div. 2) D - The Best Vacation 题解(二分+思维)
题目链接 题目大意 一年有n个月,每个月有d[i]天,让你找出连续x天,使其日期的总和最大,可以跨年 题目思路 这里要发现一个性质:即连续的x天一定满足最后一天在月份的结尾,结论是显然的. 然后用两个 ...
- codeforces Round #645 (Div. 2)D题解
Codeforces Round #645 (Div. 2)--D题解 作为一名菜鸡,理所当然得没有A出来,这道题数据放小就一水题了,可惜数据这块卡的死死的. 本题最重要的一点就是你要推出来一个结论: ...
- 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 ...
- 【Codeforces Round #767 (Div. 2)】 C. Meximum Array 题解
[Codeforces Round #767 (Div. 2) ]C. Meximum Array 题解 1629C: Meximum Array 题解 [Codeforces Round #767 ...
- Codeforces Round #732 (Div. 2) C. AquaMoon and Strange Sort 思维
传送门 文章目录 题意: 思路: 题意: 给你nnn个数,每个数初始方向是向右,每次可以交换相邻两个位置并且将这两个位置的方向调换,问这个序列的最终状态能否是非递减且方向都向右. n≤1e5,ai≤1 ...
- Codeforces Round #588 (Div. 2) D. Marcin and Training Camp 思维
传送门 文章目录 题意: 思路: 题意: 有nnn个人,每个人都有一个能力值bib_ibi以及他会的技能aia_iai,当他会第xxx个技能的时候,aia_iai的第xxx位是111.定义当xx ...
- Codeforces Round #727 (Div. 2) E. Game with Cards dp + 思维
传送门 文章目录 题意: 思路: 题意: 初始有左右手,上面各有一个数字为000的卡牌,每次都有一个新卡kik_iki,你可以将其放在左手或者右手,使两只手上的卡片范围在[ll,i,rl,i][l_ ...
- Codeforces Round #715 (Div. 1) C. Complete the MST 补图 + 思维 + 最小生成树
传送门 文章目录 题意: 思路 题意: 给你一张nnn个点mmm个边的图,mmm条边是给定的,要求你给未给定的边赋值一个边权,使得所有边权异或和为000,求所有满足这种情况的图中最小生成树边权和最小的 ...
- Codeforces Round #632 (Div. 2) C. Eugene and an array 思维 + 前缀和
传送门 文章目录 题意: 思路: 题意: 给定一个长度为nnn的序列aaa,定义一段区间为好区间是这段区间的所有连续子区间的和都不为000,求好区间的个数. 思路: 套路题,定义aia_iai的前缀 ...
最新文章
- 基本控件HyperlinkButton控件
- Android Studio安卓开发中使用json来作为网络数据传输格式
- 子div在父div中置底
- 12.1 Bootstrap介绍
- 【Python】利用graphviz和pycallgraph库自动生成Python函数调用关系图
- 深度学习之 Cascade R-CNN
- 使用C++生成条形码
- 各种数据集汇总——转载而来
- java制作oa审批流程,传智播客JAVA培训OA项目 审批流转模块
- 【web】自定义协议Protocol URL
- 开心网刷分程序详解以及web游戏破解思路分析(一)
- 2021中国开源优秀人物榜出炉!
- 如何让孩子算20以内的加法更快
- wetool 接入图灵机器人_wetool企业版wetool支持微信版本-免费版
- Python利用selenium简单的爬取网易云歌曲排行榜
- linux系统日志怎么退出,linux系统日志的清除
- 腾讯游戏助手运行闪退日志查看
- 再说不会用python计算地球表面多边形面积,可不能了!(记录五种可行方法)
- Spark RDD的宽依赖和窄依赖
- 二进制空间权重矩阵_空间权重矩阵(SWM)