爱丽丝和鲍博喜欢玩一维战舰的游戏。他们在一行有n个方格的纸上玩这个游戏(也就是1×n的表格)。

在游戏开始的时候,爱丽丝放k个战舰在这个表格中,并不把具体位置告诉鲍博。每一只战舰的形状是 1×a 的长方形(也就是说,战舰会占据a个连续的方格)。这些战舰不能相互重叠,也不能相接触。

然后鲍博会做一系列的点名。当他点到某个格子的时候,爱丽丝会告诉他那个格子是否被某只战舰占据。如果是,就说hit,否则就说miss。

但是这儿有一个问题!爱丽丝喜欢撒谎。他每次都会告诉鲍博miss。

请你帮助鲍博证明爱丽丝撒谎了,请找出哪一步之后爱丽丝肯定撒谎了。

Input

单组测试数据。
第一行有三个整数n,k和a(1≤n,k,a≤2*10^5),表示表格的大小,战舰的数目,还有战舰的大小。输入的n,k,a保证是能够在1×n的表格中放入k只大小为a的战舰,并且他们之间不重叠也不接触。
第二行是一个整数m(1≤m≤n),表示鲍博的点名次数。
第三行有m个不同的整数x1,x2,…,xm,xi是鲍博第i次点名的格子编号。格子从左到右按照1到n编号。

Output

输出一个整数,表示最早一次能够证明爱丽丝一定撒谎的点名编号。如果不能证明,输出-1。点名的编号依次从1到m编号。

Input示例

样例1
11 3 3
5
4 8 6 1 11

样例2
5 1 3
2
1 5

Output示例

样例输出1
3

样例输出2
-1

开始WA了,没看清题目,每个战舰还得隔开
思路:先算出题目给出的条件下最多能放的舰队数量:cnt=(n+1)/(a+1)
接着每次插入一个点,则将其放入SET中,并取出其前后节点,判断该节点的插入会使得能放下战舰数量减少多少,如果减完了,比K小则为答案。
代码:

#include<bits/stdc++.h>
using namespace std;
set<int> s;
int main()
{int n,k,a,m;while(~scanf("%d%d%d",&n,&k,&a)){s.clear();s.insert(0);s.insert(n+1);set<int>::iterator it;scanf("%d",&m);int cnt=(n+1)/(a+1);int z;int ans=-1;a++;for(int i=0;i<m;i++){scanf("%d",&z);s.insert(z);it=s.find(z);int r=*(++it);int l=*(--(--it));cnt-=((r-l)/a-(r-z)/a-(z-l)/a);if(cnt<k&&ans==-1) ans=i+1;}cout<<ans<<endl;}
}

1521 一维战舰 水题相关推荐

  1. 51 nod 1521 一维战舰 时间复杂度O(n),同 Codeforces 567D. One-Dimensional Battle Ships 有详细注释

    题目:51nod: 题目Codeforces: 题目注意到两个战舰不能挨在一起就可以了. // 每一段 struct node{int left; // 段的左端点int right; // 段的右端 ...

  2. 51 nod 1521 一维战舰 时间复杂度O(n),同 Codeforces 567D. One-Dimensional Battle Ships 有详细注释...

    题目:51nod: 题目Codeforces: 题目注意到两个战舰不能挨在一起就可以了. // 每一段 struct node{int left; // 段的左端点int right; // 段的右端 ...

  3. 玲珑杯 1164 - 战舰萝莉 线段树水题

    点击打开链接 DESCRIPTION 在大战之后,法力浮·鳝AK迅速驾船驶向北海.当然他知道水之灵不可能那么容易得到,正如爱迪生曾说过:"要把BOSS打倒就要准备足够的等级."所以 ...

  4. 水题/poj 1852 Ants

    1 /* 2 PROBLEM:poj1852 3 AUTHER:Nicole 4 MEMO:水题 5 */ 6 #include<cstdio> 7 using namespace std ...

  5. HDU2673-shǎ崽(水题)

    如果不能够直接秒杀的题,就不算水题.又应证了那句话,有时候,如果在水题上卡住,那么此题对于你来说,也就不算是水题了额~~ 刚睡醒,迷迷糊糊. 题目的意思很简单,求一个最大的,再求一个最小的.几乎是什么 ...

  6. 图论刷水题记录(二)(最短路-----SPFA算法)

    继第一篇的后续,又来刷水题了,写的是SPFA算法,这个算法的复杂度比较玄学,感觉能不用就不用了,但是他的好处就是可以判断负圈. 3月26日: 1.POJ 1847 Tram 题意:在一个交通网络上有N ...

  7. 图论刷水题记录(一)(最短路-----dijkstra算法)

    最近实在不知道干些什么,感觉自己除了水题什么都不会做,算了去刷一刷图论的水题吧本来想合起来一起发,想了想太长的话以后看起来也不方便,题目所以今天晚上就先发了dij部分,由上到下由易变难. 1.POJ ...

  8. hdu 2041:超级楼梯(水题,递归)

    超级楼梯Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissio ...

  9. HDU2568 前进【水题】

    前进 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  10. CF Round #426 (Div. 2) The Useless Toy 思维 水题

    题目链接: http://codeforces.com/contest/834/problem/A 题目描述: 输入起始状态和结束状态和数列长度, 判断旋转方向是顺时针逆时针还是不合理 解题思路: 长 ...

最新文章

  1. 前端小问题1——(最近好久没有发博客。。。待续)
  2. JavaWeb核心编程之Tomcat安装和配置
  3. h5页面的写法_8. 开始构建我们的 index.hbs 页面
  4. matlab fft简单小例子,matlabfft简单例子(A simple example of matlabfft).doc
  5. Java 图形用户界面(GUI)java.awt包概述
  6. 微软工程师测试题——未来
  7. linux输入一个用户看是否在工作,linux下的用户管理详解
  8. HDU 3072 (强连通分量)
  9. java编程自学app_Java编程自学软件
  10. 官方配置要求_《魔兽争霸3》重制版极客装机配置和官方要求配置
  11. AI人工智能专业词汇集
  12. ubuntu安装cuda驱动
  13. 用户界面之工具栏详解-AutoRunner自动化测试工具
  14. 蓝桥杯 连续区间数(抖机灵做法)
  15. Vue3/ Vue3 组件通讯 -- 子传父 方法流程 总结
  16. apigateway-kong(二)admin-api(结合实例比官网还详细)
  17. HTML、CSS 前端面试题收集
  18. 白鹭引擎开发微信小游戏: API 调用教程文档
  19. 怎么调试S12X微控制器的XGATE上的软件
  20. R语言使用报错及处理总结(不断更新)

热门文章

  1. matlab中nnt,Matlab语言的Neural Network Toolbox 及其在同步中
  2. 北大2022计算机学院夏令营,2020年北京大学“第十三届(2020)全国优秀大学生暑期夏令营”录取名单(第一批)及活动须知...
  3. pdf 转图片 php,php如何实现pdf转换成图片
  4. 豪迪QQ群发通杀破解补丁使用教程
  5. JVM-Cpu飙升排查及解决
  6. 更改Ansys Workbench的语言的方法
  7. 为程序员准备的英语学习资料
  8. 计算机max函数的格式,Word怎么输入Max公式
  9. 2022-2028全球智能门锁系统行业调研及趋势分析报告
  10. java是先学前端还是后端_我应该学前端还是后端?