Codeforces_732_D
http://codeforces.com/problemset/problem/732/D
二分查找。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std; int n,m,d[],a[],ok[]; int f(int x)
{
memset(ok,,sizeof(ok));
long long sum = ;
for(int i = x;i >= ;i--)
{
if(d[i] && !ok[d[i]])
{
ok[d[i]] = ;
sum += a[d[i]];
}
else if(sum) sum--;
}
for(int i = ;i <= m;i++)
{
if(!ok[i]) return ;
}
if(sum) return ;
return ;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i = ;i <= n;i++) scanf("%d",&d[i]);
for(int i = ;i <= m;i++) scanf("%d",&a[i]);
int l = ,r = n;
while(l < r)
{
int mid = (l+r)/;
if(f(mid)) r = mid;
else l = mid+;
}
if(f(l)) printf("%d\n",l);
else printf("-1\n");
return ;
}
Codeforces_732_D的更多相关文章
随机推荐
- Jenkins2构建pipeline流水线
流水线有两种方式: 1.脚本式流水线 2.声明式流水线 构建流水线的简单示例: 脚本式流水线 node ('master'){ stage("Source"){ //从Git仓库中 ...
- JS单元测试及原理
单元测试 单元测试是指对软件中的最小可测试单元进行检查和验证,通过单元测试可以检测出潜在的bug,还可以快速反馈功能输出,验证代码是否达到预期,也可以保证代码重构的安全性. 有这样一个方法: let ...
- js以当前时间为基础,便捷获取时间(最近2天,最近1周,最近2周,最近1月,最近2月,最近半年,最近一年,本周,本月,本年)
在开发公司管理后台系统时,遇到了需要根据不同的时间段如"近一年.近半年.近三月.近一月.近一周"来获取并展示不同图表数据的需求,很是繁琐,项目开发周期又非常的短,自己想了一下,虽然 ...
- JS中Cookie、localStorage、sessionStorage三者的区别
cookie:大小4k,一般由服务器生成,可设置失效时间,关闭浏览器后失效,与服务器通信时:每次都会携带HTTP头中,如果使用cookie保存过多数据会带来性能问题 localhostStorage: ...
- 非关系数据库与redis安装
1.什么是 NoSQL? NoSQL(NoSQL = Not Only SQL ),意为反 SQL 运动,是一项全新的数据库革命性运动,2000 年 前就有人提出,发展至 2009 年趋势越发高涨.它 ...
- springcloud复习2
Hystrix断路器 Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时.异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导 ...
- 实战_Spring_Cloud
目录 前言 开发环境 源码地址 创建工程 服务注册中心(Eureka) Eureka Server Eureka Client 注册中心高可用 小结 负载均衡(Ribbon) RestTemplate ...
- JMeter——分布式压测
一.Jmeter4.0分布式压测准备工作 压测注意事项 the firewalls on the systems are turned off or correct ports ...
- python 进程事件
1.作用 通过信号量,控制全部进程进入阻塞状态,也可以通过控制信号量,解除全部进程的阻塞 注意:定义的事件对象,默认状态是阻塞 2.常用方法 """ 对象.set() 作 ...
- Vue 组件 传值
注意 Vue模板只能有一个对象,要想用多个对象时用div包裹 一.父组件->子组件 通过props 1.子组件: 声明:proprs =[‘xx’],xx是在父组件中引用子组件,子组件的属性(t ...