从左到右扫一遍, 维护一个单调不递减队列. 然后再从右往左重复一遍然后就可以统计答案了. ---------------------------------------------------------------------------- #include<bits/stdc++.h>   #define rep(i, n) for(int i = 0; i < n; ++i) #define clr(x, c) memset(x, c, sizeof(x)) #define for…
第一次写单调队列太垃圾... 左右各扫一遍即可. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define N 50010 using namespace std; struct data { int x,h; }a[N],q[N]; int n,m,l,r; int ok1[N],ok2[N]; inline int read() { ,ans…
3314: [Usaco2013 Nov]Crowded Cows Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 86  Solved: 61[Submit][Status] Description Farmer John's N cows (1 <= N <= 50,000) are grazing along a one-dimensional fence. Cow i is standing at location x(i) and has…
3314: [Usaco2013 Nov]Crowded Cows Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 111  Solved: 79[Submit][Status][Discuss] Description Farmer John's N cows (1 <= N <= 50,000) are grazing along a one-dimensional fence. Cow i is standing at location x(…
http://www.lydsy.com/JudgeOnline/problem.php?id=3314 一眼就是维护一个距离为d的单调递减队列... 第一次写.....看了下别人的代码... 这一题只需要维护距离为d的最大,然后判断最大的是否大于等于自己高度*2 #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream>…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3314 题意: N头牛在一个坐标轴上,每头牛有个高度.现给出一个距离值D. 如果某头牛在它的左边,在距离D的范围内,如果找到某个牛的高度至少是它的两倍,且在右边也能找到这样的牛的话.则此牛会感觉到不舒服. 问有多少头会感到不舒服. 题解: 从左到右.从右到左两遍单调队列. 单调性: (1)坐标x递增. (2)高度h递减. 维护单调性: (1)从队首开始,所有与当前牛i的距离超过d的,以后都…
正反两遍个来一次单调队列 DP 即可. Code: #include<cstdio> #include<deque> #include<algorithm> using namespace std; const int maxn = 50000+3; int mark[maxn]; struct Node{ long long pos,height; Node(long long pos=0,long long height=0):pos(pos),height(hei…
Photo bzoj-3126 题目大意:给你一个n长度的数轴和m个区间,每个区间里有且仅有一个点,问最多能有多少个点. 注释:$1\le n \le 2\cdot 10^5$,$1\le m\le10^5$. 想法:开始和GXZlegend在那里贪心.贪了挺久发现几乎所有的贪心策略都会被卡,此题被当做毒瘤题.然后上bz上找题解发现了新大陆?? 这题是一个dp. 状态:dp[i]表示第i个位置必须放点,最多能在前i个位置放多少点. 转移:我们记录几个事儿.首先,R[i]表示所有区间中包含i且左端…
题目链接 Solution 应该可以用二分拿部分分,时间 \(O(n^2logn)\) . 然后可以考虑 \(n^2\) \(dp\) ,令 \(f_i\) 代表 \(i\) 点被激活,然后激活 \(i\) 之前所有点所需的半径. 那么很显然 \(f[i]=min(max(pos[i]-pos[j],f[j]))\) 其中 \(j<i\) . 再从后往前记录一个 \(g[i]\) , 那么答案就为 \(min(max(f[i],g[i]))\)以及还要考虑两点中间的,其中 \(1<=i<…
概要: 对于维护信息具有单调性的性质或者问题可以转化为具有单调性质的模型的题,我们可以考虑用单调栈或单调队列. 技巧及注意: 技巧很多,只要能将问题转化为单调性问题,就好解决了. 当维护固定长度的单调区间,我们考虑用单调队列,如 [BZOJ]3314: [Usaco2013 Nov]Crowded Cows(单调队列) [BZOJ]1047: [HAOI2007]理想的正方形(单调队列/-二维rmq+树状数组套树状数组)(一维连续的变成二维连续区间) 单调栈维护长度时要进行及时更新,例如: [B…