H-FZU2203-单纵大法好
2015-10-13 10:39
351 查看
<span style="font-size:18px;">题目链接:<a target=_blank href="http://acm.fzu.edu.cn/problem.php?pid=2203" target="_blank">FZU2203</a></span>
贪心加二分法。
<pre name="code" class="cpp">#define _CRT_SECURE_NO_DEPRECATE #include<stdio.h> #include<algorithm> #include<cstring> using namespace std; int len, num, size,m; int place[200005],bomb[200005];
//放x个炸弹能否被炸到 bool judge(int x){ for (int i = 1; i <= x; i++) bomb[i] = place[i]; sort(bomb + 1, bomb + x + 1); bomb[0] = 0, bomb[x + 1] = len + 1; int cnt = 0; for (int i = 0; i <= x; i++) cnt += (bomb[i + 1] - bomb[i]) / (size + 1); if (cnt >= num)return true; else return false; } int main(){ while (scanf("%d %d %d", &len,&num, &size) != EOF){ scanf("%d", &m); for (int i = 1; i <= m; i++) scanf("%d", &place[i]); int r = m, l = 1, mid, ans = 0; //ans要初始化!!!! if (judge(m)) printf("-1\n"); else{ while (l <= r){ mid = (l + r) >> 1; if (judge(mid)){ ans = mid; l = mid + 1; } else r = mid - 1; } printf("%d\n", ans + 1); } } return 0; }
相关文章推荐
- JavaScript高级程序设计之BOM之window 对象之系统对话框 第8.1.7讲笔记
- java里面的treemap与HashMap
- oracle存储过程
- ios发布应用到appstore
- 实时视频流播放 和 流 推流器
- 计算时间差
- Python文件读写
- 转:基于InstallShield2013LimitedEdition的安装包制作
- 浅谈Android 6.0之Runtime Permission
- dos2unix批量转换的一种方法
- dos2unix批量转换的一种方法
- Qualcomm平台Mipi DSI转RGB
- 深度学习(十)keras学习笔记
- eclipse 中progect build target 列表为空的问题
- NDK,在JNI层使用AssetManager读取文件
- log4j日志级别
- jcrop的bug
- Tomcat: Connector中HTTP与AJP差别与整合
- 【JavaScript】引号嵌套问题与Javascript中多行HTML写作方案
- 颜色知识,ps调整色彩