【JZOJ4898】【NOIP2016提高A组集训第17场11.16】人生的价值
题目描述
NiroBC终于找到了人生的意义,可是她已经老了,在新世界,没有人认识她,她孤独地在病榻上回顾着自己平凡的一生,老泪纵横。NiroBC多么渴望再多活一会儿啊!
突然一个戴着黑色方框眼镜,方脸,穿着高腰裤的长者,乘着圣洁的祥云,飞进了NiroBC的简陋的小屋。
长者说:“你渴望再多活一段时间,再多创造人生的价值吗?”
“愿意!”NiroBC毫不犹豫地回答道。
“生命是宝贵的,不能随便续。你能说出人生的价值究竟是什么吗?只有说对了,我才能给你延续生命。”长者面不改色,嘴角微微扬起鬼魅的笑容。
“那就是不停地吃吃吃吃吃吃吃吃吃吃!”NiroBC思索片刻,用老朽的嗓音吐出了一个又一个“吃”字,足以看出她对食物的渴望。
“对,那我再给你100年生命。”长者点了点头。
长者将NiroBC带回了人间,带回了NiroBC母校YYHS。NiroBC谨记长者的教导,知道吃吃吃才是人生的价值。于是,NiroBC决定用自己在新世界赚得的巨款,为YYHS捐资兴建食堂,确定食堂的位置的问题让NiroBC很头疼。
YYHS的校园可以抽象成一个无限二维平面,校园里分布着N个教室(编号为1..N),第i个教室的坐标为(x[i], y[i]),里面有w[i]个学生。新食堂的饭菜十分美味,然而同学们都比较懒。当且仅当新食堂的位置和第i个教室的位置的曼哈顿距离小于等于L,第i个教室里的学生会去新食堂吃饭。
有博爱之心的NiroBC希望有尽量多的学生去新食堂吃饭,那么这个问题就交给你了!
数据范围
=w=
旋转坐标系后,放缩。于是就把曼哈顿距离转化为切比雪夫距离,原问题就转化成有很多个正方形,取一个点使得包含这个点的所有正方形的权值和最大。
显然我们可以使用差分和数据结构来做。
代码
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#define ll long long
using namespace std;
const char* fin="value.in";
const char* fout="value.out";
const int inf=0x7fffffff;
const int maxn=100007,maxa=200017,maxt=maxa*4;
int n,m,i,j,k,l,r,ans,tmp;
int tot=0;
int c[maxt],mk[maxt];
struct node{
int x,y,z;
}a[maxn];
struct event{
int id,k,x;
}b[maxn*2];
bool cmp(event a,event b){
return a.x<b.x;
}
void markdown(int l,int r,int t){
c[t]+=mk[t];
if (l!=r){
mk[t*2]+=mk[t];
mk[t*2+1]+=mk[t];
}
mk[t]=0;
}
void change(int l,int r,int t,int v1,int v2,int v){
int mid=(l+r)/2;
markdown(l,r,t);
if (l>v2 || r<v1) return ;
if (l>=v1 && r<=v2){
mk[t]+=v;
markdown(l,r,t);
return;
}
change(l,mid,t*2,v1,v2,v);
change(mid+1,r,t*2+1,v1,v2,v);
c[t]=max(c[t*2],c[t*2+1]);
}
int getmax(int l,int r,int t,int v1,int v2){
int mid=(l+r)/2;
markdown(l,r,t);
if (l>v2 || r<v1) return 0;
if (l>=v1 && r<=v2) return c[t];
return max(getmax(l,mid,t*2,v1,v2),getmax(mid+1,r,t*2+1,v1,v2));
}
int main(){
freopen(fin,"r",stdin);
freopen(fout,"w",stdout);
scanf("%d%d",&n,&m);
int maxy=maxa-1;
for (i=1;i<=n;i++){
scanf("%d%d%d",&j,&k,&a[i].z);
a[i].x=maxn+j-k;
a[i].y=j+k;
b[++tot].x=max(1,a[i].x-m);
b[tot].k=1;
b[tot].id=i;
b[++tot].x=min(maxy,a[i].x+m+1);
b[tot].k=-1;
b[tot].id=i;
}
sort(b+1,b+tot+1,cmp);
l=1;
for (i=1;i<maxa;i++){
while (l<=tot & b[l].x==i){
j=b[l].id;
change(1,maxy,1,max(1,a[j].y-m),min(maxy,a[j].y+m),a[j].z*b[l].k);
l++;
}
ans=max(ans,getmax(1,maxy,1,1,maxa));
}
printf("%d",ans);
return 0;
}
=o=
比赛的时候也想差分,但是囿于曼哈顿距离的局限性,无法完成。
后来觉得如果是切比雪夫距离的话,会好做很多。
但是并不知道切比雪夫距离和曼哈顿距离可以相互转化。
于是就懵逼了。
【JZOJ4898】【NOIP2016提高A组集训第17场11.16】人生的价值的更多相关文章
- 【JZOJ4899】【NOIP2016提高A组集训第17场11.16】雪之国度
题目描述 雪之国度有N座城市,依次编号为1到N,又有M条道路连接了其中的城市,每一条道路都连接了不同的2个城市,任何两座不同的城市之间可能不止一条道路.雪之女王赋予了每一座城市不同的能量,其中第i座城 ...
- 【JZOJ4901】【NOIP2016提高A组集训第18场11.17】矩阵
题目描述 他是一名普通的农电工,他以一颗无私奉献的爱岗敬业之心,刻苦钻研业务,以娴熟的技术.热情周到的服务赢得了广大客户的尊敬和赞美.他就是老百姓称为"李电"的李春来. 众所周知, ...
- 【NOIP2016提高A组集训第4场11.1】平衡的子集
题目 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? 分析 如果暴力枚举每个人被分到哪 ...
- 【JZOJ4855】【NOIP2016提高A组集训第6场11.3】荷花池塘
题目描述 于大夫建造了一个美丽的池塘,用来让自己愉快的玩耍.这个长方形的池子被分割成了M 行 和N 列的正方形格子.池塘中有些地方是可以跳上的荷叶,有些地方是不能放置荷叶也不 能跳上的岩石,其他地方是 ...
- 【JZOJ4841】【NOIP2016提高A组集训第4场11.1】平衡的子集
题目描述 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? 数据范围 40%的数据满足: ...
- 【NOIP2016提高A组集训第14场11.12】随机游走
题目 YJC最近在学习图的有关知识.今天,他遇到了这么一个概念:随机游走.随机游走指每次从相邻的点中随机选一个走过去,重复这样的过程若干次.YJC很聪明,他很快就学会了怎么跑随机游走.为了检验自己是不 ...
- 【NOIP2016提高A组集训第13场11.11】最大匹配
题目 mhy12345学习了二分图匹配,二分图是一种特殊的图,其中的点可以分到两个集合中,使得相同的集合中的点两两没有连边. 图的"匹配"是指这个图的一个边集,里面的边两两不存在公 ...
- 【NOIP2016提高A组集训第14场11.12】随机游走——期望+树形DP
好久没有写过题解了--现在感觉以前的题解弱爆了,还有这么多访问量-- 没有考虑别人的感受,没有放描述.代码,题解也写得歪歪扭扭. 并且我要强烈谴责某些写题解的代码不打注释的人,像天书那样,不是写给普通 ...
- 【JZOJ4893】【NOIP2016提高A组集训第15场11.14】过河
题目描述 数据范围 解法 由于同一个点,同一个圆盘最多只会走一次. 把(i,j)当作一个点,表示第i个点,放第i个圆盘. 那么就可以使用最短路. 时间复杂度为O(n4∗k). 事实上存在冗余圆盘,一个 ...
随机推荐
- js节点
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- sas正则式之prxparen
sas正则式之prxparen 今天还是要继续正则式的内容,这周的内容是prxparen函数,这个函数我个人觉得特别有用,是因为他和"|"结合使用可以同时容纳很多种情况的字符串. ...
- openCV 矩阵(图像)操作函数
有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等.大多数函数支持ROI,如果图像ROI被设置,那么只处理ROI部分 少部分函 ...
- python 搜索匹配文件目录下所有的jpg或者png图片
import glob PATH_TO_TEST_IMAGES_DIR = 'D:\TrainChangeFifteenData\Picture\Test' for pidImage in glob. ...
- 2018-8-17-C#-从零开始写-SharpDx-应用-控制台创建-Sharpdx-窗口
title author date CreateTime categories C# 从零开始写 SharpDx 应用 控制台创建 Sharpdx 窗口 lindexi 2018-8-17 9:3:3 ...
- c++设计模式:单例模式
1.设计思想: 单例模式,顾名思义,即一个类只有一个实例对象.C++一般的方法是将构造函数.拷贝构造函数以及赋值操作符函数声明为private级别,从而阻止用户实例化一个类.那么,如何才能获得该类的对 ...
- dp入门 hdu2059 龟兔赛跑
龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- jquery 获取图片宽高为0的问题
原理:页面加载完了,图片不一定加载完了. $(function(){ $("img").on("load",function(){ //核心 var w = $ ...
- 基于python爬虫的github-exploitdb漏洞库监控与下载
基于python爬虫的github-exploitdb漏洞库监控与下载 offensive.py(爬取项目历史更新内容) #!/usr/bin/env python # -*- coding:utf- ...
- mysql导入数据中文乱码解决方法
常见的MySQL导入方法有两种 第一种方法,使用MySQL命令导入 mysql -uroot -p123456 --default-character-set=utf8 [db_name] < ...