USACO14MAR The Lazy Cow(Gold)
题意:平面上有 \(n\) 块草地,第 \(i\) 块草地坐标为 \((x_i,y_i)\) ,上面有 \(g_i\) 个单位的草。Bessie 可以吃到距离起始点不超过 \(k\)(这里是曼哈顿距离)的所有草。帮 Bessie 选定起始点使它能吃到最多的草。
看到曼哈顿距离,先转 \(45\) 度。这样 Bessie 吃的就是一个平行于坐标轴的正方形里的草。
我们发现,对于一块草地,使 Bessie 能吃到它的起始点也一定在一个平行于坐标轴的正方形里,那么被这种正方形覆盖最多的位置就是选定的起始点了。
对每块草地存下这样一个正方形,然后扫描线搞就好了。
#include<cstdio>
#include<cstring>
#include<algorithm>
inline int max(int a,int b){return a>b?a:b;}
#define M (L+R>>1)
struct segment_tree{
int mx[1<<19],lz[1<<19];
void Down(int k){
mx[k<<1]+=lz[k];lz[k<<1]+=lz[k];
mx[k<<1|1]+=lz[k];lz[k<<1|1]+=lz[k];
lz[k]=0;
}
void Add(int l,int r,int a,int L,int R,int k){
if(l<=L&&R<=r){mx[k]+=a;lz[k]+=a;return;}
Down(k);
if(l<=M)Add(l,r,a,L,M,k<<1);
if(r>M)Add(l,r,a,M+1,R,k<<1|1);
mx[k]=max(mx[k<<1],mx[k<<1|1]);
}
int Max(){return mx[1];}
}t;
const int N=1e5+3;
struct segment{int l,r,y,f;}a[N+N];
bool Cmp(const segment&a,const segment&b){return a.y==b.y?a.f>b.f:a.y<b.y;}
int n,m,ans,x[N],y[N],value[N],tmp[N+N],k;
inline void Rotate(int&x,int&y){int tmpx=x,tmpy=y;x=tmpx+tmpy,y=tmpy-tmpx;}
signed main(){
int l,r;
scanf("%d%d",&n,&m);m<<=1;
for(int i=1;i<=n;i++){
scanf("%d%d%d",value+i,x+i,y+i);
Rotate(x[i],y[i]);
tmp[i]=x[i],tmp[i+n]=x[i]+m;
}
std::sort(tmp+1,tmp+1+n+n);
k=0;
tmp[0]=-1;
for(int i=1;i<=n+n;i++)
if(tmp[i]!=tmp[i-1])tmp[++k]=tmp[i];
for(int i=1;i<=n;i++){
l=std::lower_bound(tmp+1,tmp+1+k,x[i])-tmp;
r=std::lower_bound(tmp+1,tmp+1+k,x[i]+m)-tmp;
a[i]=(segment){l,r,y[i],value[i]};
a[i+n]=(segment){l,r,y[i]+m,-value[i]};
}
std::sort(a+1,a+1+n+n,Cmp);
for(int i=1;i<=n+n;i++){
t.Add(a[i].l,a[i].r,a[i].f,1,n+n,1);
ans=max(ans,t.Max());
}
printf("%d",ans);
return 0;
}
USACO14MAR The Lazy Cow(Gold)的更多相关文章
- BZOJ3476 : [Usaco2014 Mar]The Lazy Cow
旋转坐标系后转化为正方形,$x'=x+y$,$y'=x-y+1000001$,$k'=2k-1$ 两根扫描线从左往右扫 f[i]表示y坐标下边界为i时的价值和 每次加入/删除一个点等价于一段区间加减 ...
- USACO The Lazy Cow
题目描述 这是一个炎热的夏天,奶牛贝茜感觉到相当的疲倦而且她也特别懒惰.她要在她的领域中找到一个合适的位置吃草,让她能吃到尽可能多的美味草并且尽量只在很短的距离.奶牛贝茜居住的领域是一个 N×N 的矩 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 2021record
2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...
- POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
- HDU——PKU题目分类
HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- poj分类
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
- 转载 ACM训练计划
leetcode代码 利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/http://oj.leetcode. ...
随机推荐
- ARC100E. Or Plus Max
题目 好题.没想出解法. 官方题解: 这个解法和 Small Multiple 那道题的解法有异曲同工之妙. 扩展 若把 $\mathsf{or}$ 改成 $\mathsf{and}$ 或者 $\ma ...
- apache tika检测文件是否损坏
Apache Tika用于文件类型检测和从各种格式的文件内容提取的库. 将上传文件至服务器,进行解析文件时,经常需要判断文件是否损坏.我们可以使用tika来检测文件是否损坏 maven引入如下: &l ...
- PHP会话(Session)实现用户登陆功能
对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用. 由于 Session 是以文本文件形式存储在 ...
- Http 协议学习
借助[小坦克:HTTP 协议教程] 1.HTTP协议是什么 协议是计算机在通信过程中必须共同遵守的规则,我的理解是类似所有汽车在行驶过程中必须共同遵守的交通规则一样. http协议叫超文本协议,是一种 ...
- T100——按xls格式批量导入数据
弹出File Browser窗口 PRIVATE FUNCTION cxrt020_open_file() DEFINE l_dir LIKE type_t.chr500 DEFINE r_succe ...
- nofollow标签浪费了多少站长做外链的时间
对于rel=“external nofollow”和rel=“nofollow”,这两句代码,使用起来效果基本是一致的,只是前者较后者更为规范一点,两者翻译过来的意思就是:rel=“external ...
- Winform自定义键盘控件开发及使用
最近有学员提出项目中要使用键盘控件,系统自带的osk.exe不好用,于是就有了下面的内容: 首先是进行自定义键盘控件的开发,其实核心大家都知道,就是利用SendKeys.Send发送相应 的字符,但是 ...
- 养成一个SQL好习惯
要知道sql语句,我想我们有必要知道sqlserver查询分析器怎么执行我么sql语句的,我么很多人会看执行计划,或者用profile来监视和调优查询语句或者存储过程慢的原因,但是如果我们知道查询分析 ...
- linux 进程优先级 调度 nice pri
转:http://www.linuxidc.com/Linux/2016-05/131244.htm 深入 Linux 的进程优先级 [日期:2016-05-11] 来源:liwei.life 作者 ...
- ARM cortex-version
cortex-M\A\R M microcontroller 微控制器 就是单片机 A application 应用及处理器 就是手机平板电脑等 R realtime 实时处理器 响应 ...