Codefrences #336 C. Chain Reaction
来源:互联网 发布:小土豆编程软件注册机 编辑:程序博客网 时间:2024/05/17 23:53
题目传送门
//解题思路参考了[点这里](http://blog.csdn.net/snowy_smile/article/details/50402271)//通过这道题,我学到了很多的东西,线将我的体会总结如下.//题意:有n(1e5)个灯塔,每个灯塔有属性(坐标a[i].first,向左的照射范围a[i].second),所有灯塔坐标两两不同。 我们从右往左,对于每个灯塔,其所照射到的所有灯塔都被认定为被破坏。 我们现在可以在所有灯塔的右边,布置一个新的灯塔,位置和范围任意定。 问你,是否有一种布置灯塔的方案,可以使得被破坏的灯塔数尽可能少,并输出最少破坏的灯塔数。//解题思路:尝试暴力! 我们发现,我们新灯塔的功能,其实是使得最右面的若干个灯塔失效。 意思就是,使得第1,2,3,4,5,……,n个灯塔,作为没被破坏的最后一个灯塔。 我们能否算出第i个灯塔,作为没被破坏的最后一个灯塔条件下的答案呢? 这个显然是很容易做到的。我们可以按照灯塔坐标对这n个灯塔做升序排序。 然后,对于第i个灯塔,它可以破坏掉的区间范围是a[i].first-a[i].second 设最后一个破坏掉的位置为pos,那么我们在a中做二分, 查找第一个位置比pos小的。之前的便全部保留了。 基于这个方式,我们就可以在O(nlogn)的条件下,枚举最后一个没被破坏的灯塔,暴力过掉这道题了。
//AC代码如下://Created Author: just_sort//Created Time : 2016/1/20 15:43//File Name : Chain Reaction#include <cstdio>#include <cstring>#include <cctype>#include <limits.h>#include <iostream>#include <algorithm>using namespace std;#define Read(x) scanf("%d",&x)const int maxn = 100010;pair <int,int> a[maxn];int n;int ans[maxn];int main(){ Read(n); for(int i=1;i<=n;i++) { Read(a[i].first); Read(a[i].second); } int answer=INT_MAX; sort(a+1,a+n+1); a[n+1].first=-1; ans[0]=0; for(int i=1;i<=n;i++) { int pos=lower_bound(a+1,a+i,make_pair(a[i].first-a[i].second,-1))-a-1; ans[i]=ans[pos]+1; answer=min(answer,n-ans[i]); } printf("%d\n",answer); return 0;}
0 0
- Codefrences #336 C. Chain Reaction
- cf#336-C - Chain Reaction-二分
- codeforce 608C Chain Reaction
- Codeforces Round #336 (Div. 2) C. Chain Reaction
- Codeforces Round #336 (Div. 2) 608C Chain Reaction(dp)
- Codeforces Round #336 (Div. 2)C. Chain Reaction
- Codeforces Round #336 (Div. 2)-C. Chain Reaction
- Chain reaction
- 续Codeforces 608 C Chain Reaction
- 【33.33%】【codeforces 608C】Chain Reaction
- Codeforces Round #336 (Div. 2)-C Chain Reaction(二分+DP)
- Codeforces Round #336 (Div. 1) A - Chain Reaction
- Codeforces Round #336 (Div. 1)A. Chain Reaction(DP)
- 607A Chain Reaction(DP)
- Codeforces 607 A Chain Reaction
- Codeforces Round #336 (Div. 1) 607A Chain Reaction 简单dp
- Codeforces Round #336 (Div. 1) A. Chain Reaction DP+(可选二分)
- Codeforces 607A Chain Reaction 【二分 + dp】
- ReactJS组件间沟通的一些方法
- C Primer Plus8-5
- Linux C语言 内存越界问题总结
- java特种兵读书笔记(4-3)——java通信之IO与通信调度方式
- “互联网+”与我:今年有哪些新板眼
- Codefrences #336 C. Chain Reaction
- linux如何进入图形界面
- 妈的,好久没写博客了,搞个收藏吧
- cd---命令cmd打开文件夹
- apache和tomcat
- C Primer Plus8-6
- Ubuntu配置IP
- easyui控件与Activex控件遮挡问题
- UISegmentedControl小技巧