Problem Description

小绿一直坚持不懈的追求他的一个高中女同学。最近妹子终于被他打动,决定在接下来n天对他进行m项考验(同一项考验可能会在不同的两天重复进行,通过一次即可),如果他能全部通过,妹子就会答应和他交往。
小绿在得到消息后,兴奋不已,虽然他是一个不折不扣的weisuo死宅,虽然他除了代码什么都不会,但是他对自己的IQ十分自信!他能准确的估计自己通过某一项考验需要准备多少天,当然如果在某天去参加考验,那么那天就没时间准备其他项考验了。现在他偷偷的知道了妹子对他的考验安排,形势一片大好。小绿想尽快完成,他当然知道最少要多少天内完成所有考验,不过他决定将这个问题送给学弟,来分享他喜悦的心情。

Input

首先第一行输入一个整数T(T<=30)代表接下来有T组数据。
每组数据开头先输入两个整数n,m(0 < n, m <100000),意义如题。
第二行n个以空格隔开的非负整数 ai (0 <= ai <= m),代表第i天妹子将会对小绿进行第ai项考验(ai=0代表第i天不进行任何考验)。
第三行m个以空格隔开的非负整数 bi (1 <= bi <= 100000),代表小绿通过第i项测试之前需要准备够bi天。

Output

输出小绿完成所有的考验所需要的最短时间,如果在n天之内他不能完成所有考验请输出-1。

Example Input

3
5 1
1 1 1 1 1
5
10 3
0 0 1 2 3 0 2 0 1 2
1 1 4
5 1
0 0 0 0 1
1

Example Output

-1
9
5

#include<bits/stdc++.h>
using namespace std;
#define maxn 100055
int sum;
int a[maxn], Time[maxn], n, m;
int vis[maxn];
bool solve(int mid)
{//printf("mid = %d\n", mid);int t = mid - m, i;//t是最大可以用来准备的时间if(sum > t) return 0;//如果最大可以用来准备的时间,都没有最少需要的时间大的话memset(vis, 0, sizeof(vis));int num = 0;for(i = mid; i >= 1; i--)//从后往前暴力{if(a[i] && !vis[a[i]]){vis[a[i]] = 1;num++;//用来记录通过了几个考验t = min(t, i-1-(m-num));//更新t,此时最大可以用来准备的时间。t -= Time[a[i]];if(t < 0) break;}}if(t >= 0 && num == m) return 1;else return 0;
}
int main()
{int T, i;scanf("%d", &T);while(T--){scanf("%d %d", &n, &m);for(i = 1; i <= n; i++)scanf("%d", &a[i]);sum = 0;for(i = 1; i <= m; i++){scanf("%d", &Time[i]);sum += Time[i];//完成全部考验至少需要的天数}int l = 1, r = n;int flag = 0;while(l <= r)//二分答案{int mid = (l+r)/2;if(solve(mid)) {//满足就缩小范围flag = 1;r = mid-1;}else l = mid+1;}if(flag) printf("%d\n", r+1);else printf("-1\n");}return 0;
}

【二分答案】SDUT-4072 小绿的脱单梦相关推荐

  1. 双11了,漂亮灵气仙气十足的小姐姐想脱单,广东惠州人,大专学历财务工作,性格温和(NO.001)...

    点击上方蓝色文字关注置顶公众号 NO.001 广东妹子 个 人 基 本 信 息 出生日期:1995年 身高:155cm 现居地:广东-珠海 老家:广东-惠州人 学历:大专学历 职业:财务工作 自 我 ...

  2. LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配

    #2006. 「SCOI2015」小凸玩矩阵 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 小 ...

  3. 【jzoj4826】【小澳的葫芦】【二分答案】

    题目大意 葫芦世界有n个葫芦,标号为1~ n.n个葫芦由m条藤连接,每条藤连接了两个葫芦,这些藤构成了一张有向无环图.小澳爬过每条藤都会消耗一定的能量.小澳站在1号葫芦上(你可以认为葫芦非常大,可以承 ...

  4. P8198 [传智杯 #4 决赛] 背单词的小智 二分答案+前缀和

    题面: 题目链接 思路: 太久没做题了,手有点生,题目的意思是求最大值的最小值 所以考虑二分答案 代码: #include <bits/stdc++.h> using namespace ...

  5. [SDOI2012]拯救小云公主【bfs+二分答案】

    题目链接 正难则反. 要直接求从起点到终点的最大距离,不妨反过来求最小的可以阻止骑士从起点到终点的对于全体圆的最小半径. 那么,就是阻止从左上角到右下角的所有相交圆,于是,就是要变成没有从左上角到右下 ...

  6. UVA1396 Most Distant Point from the Sea(AM - ICPC - Tokyo - 2007)(计算几何,半平面交 + 二分答案)

    整理的算法模板合集: ACM模板 题目传送门 见<训练指南>P279 很明显就是一个二分答案,它问的是最远的点,直接枚举因为这里都是double类型的数所以有无限个点,我们可以直接二分. ...

  7. 【基础算法】二分法(二分答案,二分查找),三分法,Dinkelbach算法,算法详解+例题剖析

    目录 一 . 二分法 二分搜索得要求: 二分查找步骤: 二分答案: 玄学的二分(二分答案) 二 . 三分法 例题 三.01分数规划问题相关算法与题目讲解(二分法与Dinkelbach算法) 一 . 二 ...

  8. hihoCoder 第136周 优化延迟(二分答案+手写堆)

    题目1 : 优化延迟 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho编写了一个处理数据包的程序.程序的输入是一个包含N个数据包的序列.每个数据包根据其重要程度不同 ...

  9. LuoguP1948 电话线 【二分答案/图论】

    其实是和奥格瑞玛一样的题啦. 但还是想了很久后看了题解. 多年以后,笨笨长大了,成为了电话线布置师.由于地震使得某市的电话线全部损坏,笨笨是负责接到震中市的负责人.该市周围分布着N(1<=N&l ...

  10. [NOIP 2015]运输计划-[树上差分+二分答案]-解题报告

    [NOIP 2015]运输计划 题面: A[NOIP2015 Day2]运输计划 时间限制 : 20000 MS 空间限制 : 262144 KB 问题描述 公元 2044 年,人类进入了宇宙纪元. ...

最新文章

  1. idea每次新建项目都要重新配置maven
  2. iOS-基于TCP连接Scoket-服务端
  3. hdu4750Count The Pairs(最小生成树找瓶颈边)
  4. 照片识别出错_AI跨年龄人脸识别技术在跨年龄寻亲的应用简析
  5. c语言设置一个选择数字的程序,C语言编一个数字益智小游戏
  6. Xcode10升级问题:Multiple commands produce Info.plist
  7. 用mysql求同类型用户重合度_匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来_PHP教程...
  8. 从我玩SNS想到自己的核心力
  9. FFmpeg实现音视频同步的精准片段拼接
  10. MySQL分页查询的sql语句
  11. python12306抢票_python编写抢票软件-12306抢票软件run下载python版-西西软件下载
  12. 我的程序员转行过程,聊聊程序员的职业出路在哪里?
  13. 青蛙的约会解题报告(转)
  14. 如何更改C盘下面用户文件夹名字
  15. 家用电信光猫更换教程+设置路由模式
  16. Could not find resource xxx/xxxx/xxx.xml报错解决
  17. 肖秀荣、陆寓丰、徐涛三大名师的正确“打开方式”
  18. php微信公众号无限制群发,微信公众号无限群发 - viki_php的个人空间 - OSCHINA - 中文开源技术交流社区...
  19. python调试 设置断点
  20. 干货|一文读懂 Spring Data Jpa!

热门文章

  1. NetLimiter 4.0.15.0 x64 破解新鲜出炉!
  2. 9.6.5对象的常引用
  3. 社区博客,拿什么留住用户
  4. java 生成der_java – 我们如何将字符串从PEM转换为DER格式
  5. Visual Studio 2019 企业版 16.9.x 创建离线包并安装教程(带百度网盘下载地址和序列号)
  6. python如何调用math函数库函数_Python math函数库
  7. 微机原理与接口技术期末考试总结
  8. c语言健康指数,C-AHI——中国汽车健康指数
  9. ‘__NR_sigreturn’ was not declared in this scope
  10. kubernetes pod NodeLost 分析