ACM/ICPC 2018亚洲区预选赛北京赛站网络赛
题意:到一个城市得钱,离开要花钱。开始时有现金。城市是环形的,问从哪个开始,能在途中任意时刻金钱>=0;
一个开始指针i,一个结尾指针j。指示一个区间。如果符合条件++j,并将收益加入sum中(收益可能是负数)。不符合就++i,并从sum中退掉收益直到sum>=0;区间长度为n时i的位置就是结果。
正确性证明:假设[a,b]是第一个合法区间。某时刻i,j都<a,i在a左边,因此j不可能扩到b右边(否则[a,b]不是第一个合法区间)。只可能j仍落在a左边,或者落到a,b中间。在i<a时,j不可能扩到b右边。j在a,b中间时,i不可能被退到a右边。
这样的尺取法以往还用来找和大于某值的最短连续区间。
- #include <iostream>
- #include <cstdio>
- #include <cmath>
- #include <algorithm>
- #include <vector>
- #include <iomanip>
- #include <cstring>
- #include <map>
- #include <queue>
- #include <set>
- #include <cassert>
- #include <stack>
- using namespace std;
- const double EPS=1e-;
- typedef long long lon;
- const lon SZ=,INF=0x7FFFFFFF;
- lon arr[*SZ],nex[SZ];
- int main()
- {
- std::ios::sync_with_stdio();
- //freopen("d:\\1.txt","r",stdin);
- lon casenum;
- cin>>casenum;
- //scanf("%d",&casenum);
- for(lon time=;time<=casenum;++time)
- //for(lon time=1;scanf("%d%d",&n,&k)!=EOF;++time)
- {
- lon n,c;
- cin>>n>>c;
- for(lon i=;i<=n;++i)cin>>arr[i];
- for(lon i=;i<=n;++i)
- {
- cin>>nex[i];
- arr[i]-=nex[i];
- }
- for(int i=n+;i<=*n;++i)arr[i]=arr[i-n];
- int sum=,cnt=,bg=;
- bool ok=;
- for(int i=;i<=*n;++i)
- {
- if(sum+arr[i]+c<)
- {
- for(;bg<=i&&sum+arr[i]+c<;++bg)
- {
- if(bg<i)sum-=arr[bg];
- }
- if(bg<=i)sum+=arr[i];
- }
- else
- {
- //if(bg==0)bg=i;
- sum+=arr[i];
- if(i-bg+>=n)
- {
- ok=;
- break;
- }
- }
- }
- // cout<<" "<<ok<<endl;
- if(ok)cout<<bg<<endl;
- else cout<<-<<endl;
- }
- return ;
- }
ACM/ICPC 2018亚洲区预选赛北京赛站网络赛的更多相关文章
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛D-80 Days--------树状数组
题意就是说1-N个城市为一个环,最开始你手里有C块钱,问从1->N这些城市中,选择任意一个,然后按照顺序绕环一圈,进入每个城市会有a[i]元钱,出来每个城市会有b[i]个城市,问是否能保证经过每 ...
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛-B:Tomb Raider(二进制枚举)
时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Lara Croft, the fiercely independent daughter of a missing adv ...
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 80 Days(尺取)题解
题意:n个城市,初始能量c,进入i城市获得a[i]能量,可能负数,去i+1个城市失去b[i]能量,问你能不能完整走一圈. 思路:也就是走的路上能量不能小于0,尺取维护l,r指针,l代表出发点,r代表当 ...
- hihoCoder #1831 : 80 Days-RMQ (ACM/ICPC 2018亚洲区预选赛北京赛站网络赛)
水道题目,比赛时线段树写挫了,忘了RMQ这个东西了(捞) #1831 : 80 Days 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 80 Days is an int ...
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 A、Saving Tang Monk II 【状态搜索】
任意门:http://hihocoder.com/problemset/problem/1828 Saving Tang Monk II 时间限制:1000ms 单点时限:1000ms 内存限制:25 ...
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 B Tomb Raider 【二进制枚举】
任意门:http://hihocoder.com/problemset/problem/1829 Tomb Raider 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 L ...
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 A.Saving Tang Monk II(优先队列广搜)
#include<bits/stdc++.h> using namespace std; ; ; char G[maxN][maxN]; ]; int n, m, sx, sy, ex, ...
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 D 80 Days (线段树查询最小值)
题目4 : 80 Days 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 80 Days is an interesting game based on Jules Ve ...
- hihoCoder-1828 2018亚洲区预选赛北京赛站网络赛 A.Saving Tang Monk II BFS
题面 题意:N*M的网格图里,有起点S,终点T,然后有'.'表示一般房间,'#'表示毒气房间,进入毒气房间要消耗一个氧气瓶,而且要多停留一分钟,'B'表示放氧气瓶的房间,每次进入可以获得一个氧气瓶,最 ...
随机推荐
- Python: itertools.compress()
定义: itertools.compress() 输入: iterable对象 相应的Boolean选择器序列 输出: iterable对象中对应选择器为True的元素 用途: 当需要用另外一个相关联 ...
- linux常用命令:crontab 命令
前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...
- 生成word附件和word域动态赋值
生成word文档和word域动态赋值,很多时候需要生成这样的word文档供下载和打印,先制作一个包含了域的 word的模板附件,放在服务器端或者字节流存入数据库,以供需要的时候代码可以获取到,如: 其 ...
- php json_decode() 如果想要强制生成PHP关联数组,json_decode()需要加一个参数true
php json_decode()该函数用于将json文本转换为相应的PHP数据结构.下面是一个例子:$json = '{"foo": 12345}';$obj = json_de ...
- mybatis项目启动报错 The content of element type "resultMap" must match "(constructor?,id*,result*,association*,collection*,discriminator?)".
启动项目报错 2018-02-26 17:09:51,535 ERROR [org.springframework.web.context.ContextLoader] - Context initi ...
- Javascript 判断对象是否相等
在Javascript中相等运算包括"==","==="全等,两者不同之处,不必多数,本篇文章我们将来讲述如何判断两个对象是否相等? 你可能会认为,如果两个对象 ...
- 20145335郝昊《网络攻防》Exp9 Web安全基础实践
20145335郝昊<网络攻防>Exp9 Web安全基础实践 实验内容 理解常用网络攻击技术的基本原理. 完成WebGoat实践下相关实验 实验步骤 XSS注入攻击 Phishing wi ...
- C语言: 两个int变量相除,结果保留两位小数
#include<stdio.h> void main() { ,j=; float h; h=(*/)/; printf("%.2f",h); } 注:%f:不指定宽 ...
- Linq join right join left join
代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- CodeCombat多人游戏Greed
题目的意思在于,更高效的Collect Gold:然后合理的安排生产出来的士兵: // This code runs once per frame. Build units and command p ...