【51Nod】1279 - 扔盘子(二分)
2017-02-28 16:31
281 查看
题目链接:点击打开题目
题解:记录从最上面到某个位置最窄的宽度,然后对每一个盘子,二分搜索它可以到的最低的地方。
代码如下:
题解:记录从最上面到某个位置最窄的宽度,然后对每一个盘子,二分搜索它可以到的最低的地方。
代码如下:
#include <cstdio> #include <cstring> #include <queue> #include <cmath> #include <stack> #include <vector> #include <algorithm> using namespace std; #define INF 0x3f3f3f3f #define CLR(a,b) memset(a,b,sizeof(a)) #define PI acos(-1.0) #define LL long long int main() { int n,m; int t; int minn = 1e9 + 7; scanf ("%d %d",&n,&m); vector<int> v; for (int i = 0 ; i < n ;i++) { scanf ("%d",&t); minn = min(minn,t); v.push_back(minn); } int endd = v.size(); int l,r,mid; int ans = 0; for (int i = 0 ; i < m ; i++) { scanf ("%d",&t); l = 0; r = endd; while (r >= l) { mid = (l + r) >> 1; if (r == l && r == endd) { l = endd; break; } if (t <= v[mid]) l = mid + 1; else r = mid - 1; } endd = l - 1; if (endd == -1) //判断是否没有位置 continue; ans++; } printf ("%d\n",ans); return 0; }
相关文章推荐
- 51nod 1279 扔盘子 (二分查找的变形)
- 51Nod - 1279 扔盘子 (单调二分)
- 51nod 1279 扔盘子 【二分+区间优化】
- 51NOD 1279 扔盘子(二分 + 思维)
- 51nod 1279 扔盘子(贪心+二分)
- 51Nod - 1279 扔盘子(二分)
- 【51nod 1279 扔盘子】(单调栈)
- 51nod 1279 扔盘子(思维题)
- 51Nod - 1279 扔盘子(思维)
- 51nod-【1279 扔盘子】
- 51nod 1279 扔盘子(单调栈)
- 51nod 1279 扔盘子
- 51nod-1279 扔盘子
- 51Nod-1279-扔盘子
- 51nod 1279 扔盘子
- 51nod 1279 扔盘子
- 51nod 1279 扔盘子
- 51Nod 1279 扔盘子 栈模拟
- 51Nod - 1279 扔盘子 —— 单调栈
- 51nod 1279 扔盘子