hihocoder1831 80 Days
思路:
令p[i] = a[i] - b[i],p[i + n] = p[i](i = 1,2,...,n),则需要找出一段长度为n的连续序列使此序列的任一前缀和均大于-c。转化如下:首先求序列p的前缀和sum[i](i = 1,2,...,2 * n - 1),然后对i = 1,2,...,n,检查是否sum[i]...sum[i + n - 1]中的每个数均大于或等于sum[i - 1] - c即可。可以使用单调队列预处理n - 1个区间最小值。
实现:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = ;
ll a[MAXN * ], q[MAXN * ], minn[MAXN], sum[MAXN * ];
int main()
{
ios::sync_with_stdio(false);
int T, n;
ll c;
cin >> T;
while (T--)
{
memset(q, , sizeof q);
memset(minn, , sizeof minn);
memset(sum, , sizeof sum);
cin >> n >> c;
ll x;
for (int i = ; i <= n; i++) cin >> a[i];
for (int i = ; i <= n; i++)
{
cin >> x;
a[i] -= x;
a[i + n] = a[i];
}
for (int i = ; i <= * n - ; i++) sum[i] = sum[i - ] + a[i];
int front = , back = ;
q[front] = ;
for (int i = ; i <= * n - ; i++)
{
while (sum[i] <= sum[q[back]] && back >= front)
back--;
q[++back] = i;
while (q[front] <= i - n && front < back)
front++;
if (i >= n) minn[i - n + ] = sum[q[front]];
}
int i = ;
for ( ; i <= n; i++)
{
if (minn[i] >= sum[i - ] - c) break;
}
cout << (i == n + ? - : i) << endl;
}
return ;
}
hihocoder1831 80 Days的更多相关文章
- 80 端口被占用 pid=4
80端口被pid=4的系统进程给占用的解决方法: 一般开发的时候我们都会安装sqlserver ,也会把Sql server Reporting Services 安装上去.原因就是这个服务占用了80 ...
- 使用nginx反向代理,一个80端口下,配置多个微信项目
我们要接入微信公众号平台开发,需要填写服务器配置,然后依据接口文档才能实现业务逻辑.但是微信公众号接口只支持80接口(80端口).我们因业务需求需要在一个公众号域名下面,发布两个需要微信授权的项目,怎 ...
- System进程(pid=4)占用80端口的解决方案
问题 Mail服务器在安装TFS服务(含SQLServer2016)后启动不了网页服务. 排查问题 使用命令查看端口占用情况 netstat -nao | find ":80" n ...
- Linux配置防火墙 开启80端口的方法
命令行输入: vi /etc/sysconfig/iptables 将 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT ...
- 北京54全国80及WGS84坐标系的相互转换
这三个坐标系统是当前国内较为常用的,它们均采用不同的椭球基准.其中北京54坐标系,属三心坐标系,大地原点在苏联的普而科沃,长轴6378245m,短轴6356863,扁率1/298.3:西安80坐标系, ...
- 安装phpstudy之后发现80端口被占用
安装phpstudy之后发现80端口被占用: 进入cmd的界面,在输入"netstat -ano",按回车键后,会显示当前电脑中程序占用的端口和程序ID等等信息:看到第一条就是:0 ...
- Apache报错信息之通常每个套接字地址(协议/网络地址/端口)只允许使用一次(could not bind to address 0.0.0.0:80)
我们常常在执行 httpd –k restart 重启Apache时报错提示: (OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次. : AH00072: make_soc ...
- wamp 修改默认apache 80端口
wamp server 环境安装包 修改默认80端口 D:\wamp\bin\apache\apache2.4.9\conf\httpd.conf 找到如下代码出修改后,重启apache即可 ## L ...
- phpstudy 80端口被占用,修改端口
搭建mantis,总会出现80端口被占用的情况.看到别的步骤是:1.cmd 运行netstat -ano查看80端口被什么占用,然后在任务管理器找到对应的结束进程.通常情况下是被System占用,右击 ...
随机推荐
- 怎样安装CentOS 6.6之三:磁盘分区的划分和修改
安装 CentOS(或Linux)系统,最难的就是磁盘分区.磁盘分区需要根据自己的实际使用需要来规划,以达到最优的效果. 工具/原料 CentOS 6.6 安装包 VMware 虚拟机 一.划分方 ...
- 怎样编写高质量的 Java 代码
代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍.也请有过代码质量相关经验的朋友提出宝贵 ...
- 解除win10禁ping方法
在局域网中,有一台电脑安装了win10操作系统,win10电脑连接网络没有问题,就是在其他电脑ping这台windows10电脑时就是ping不通,显示“请求超时.”.虽然这台windows10电脑联 ...
- Outlook 开发2
转自:http://www.cnblogs.com/madebychina/archive/2011/09/20/madebychina_2.html C#使用如下代码调用Outlook2003发送邮 ...
- checkbox的几种遍历方法
html代码如下: <div> <input type="checkbox" name="ckb" value="1" / ...
- g2o待总结
http://blog.csdn.net/u010566411/article/details/53862601
- 1.7-1.12 MapReduce Wordflow
一.案例运行MapReduce Wordflow 1.准备examples [root@hadoop-senior oozie-4.0.0-cdh5.3.6]# pwd /opt/cdh-5.3.6/ ...
- Excel2007格式分析和XML解析
1. excel2007是使用xml格式来存储的,把一个excel文件后缀改为.zip,打开之后就直接可以看到一个excel文件对应的xml格式的文件了. 这里面有几部分 对于docProps目 ...
- HTML学习笔记(六)TCP/IP
TCP/IP 是供已连接因特网的计算机进行通信的通信协议. 在 TCP/IP 中包含一系列用于处理数据通信的协议: TCP (传输控制协议) - 应用程序之间通信 UDP (用户数据包协议) - 应用 ...
- HDU5920【模拟】
模拟题这种东西啊~就是自己读题,自己打,没有别的方法...贴份6000+b的code跑: #include <bits/stdc++.h> using namespace std; //t ...