P4475 巧克力王国

题目描述

巧克力王国里的巧克力都是由牛奶和可可做成的。但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力。

对于每一块巧克力,我们设 \(x\) 和 \(y\) 为其牛奶和可可的含量。由于每个人对于甜的程度都有自己的评判标准,所以每个人都有两个参数 \(a\) 和 \(b\) ,分别为他自己为牛奶和可可定义的权重, 因此牛奶和可可含量分别为 \(x\) 和 \(y\) 的巧克力对于他的甜味程度即为 \(ax+by\)。而每个人又有一个甜味限度 \(c\) ,所有甜味程度大于等于 \(c\) 的巧克力他都无法接受。每块巧克力都有一个美味值 \(h\) 。

现在我们想知道对于每个人,他所能接受的巧克力的美味值之和为多少。

输入输出格式

输入格式:

第一行两个正整数 \(n\) 和 \(m\) ,分别表示巧克力个数和询问个数。
接下来\(n\)行,每行三个整数 \(x , y , h\) ,含义如题目所示。
再接下来 \(m\) 行,每行三个整数 \(a , b , c\) ,含义如题目所示。

输出格式:

输出\(m\)行,其中第\(i\)行表示第\(i\)个人所能接受的巧克力的美味值之和。

说明

对于\(100\%\)的数据,\(1\le n,m\le 50000,-10^9\le a_i,b_i,x_i,y_i\le 10^9\)。


kdtree 搞一下就行了,没有插入就不需要重构

然后复杂度是为什么呢(


Code:

#include <cstdio>
#include <algorithm>
#include <cctype>
#define ll long long
const int N=5e4+10;
const int K=2;
const ll inf=1ll<<45;
int read()
{int x=0,f=1;char c=getchar();while(!isdigit(c)) f=c=='-'?0:1,c=getchar();while(isdigit(c)) x=x*10+c-'0',c=getchar();return f?x:-x;
}
#define ls ch[now][0]
#define rs ch[now][1]
int ch[N][2],L[N][2],R[N][2],p[N][2],val[N],s[N];
ll sum[N],a,b,c;
int n,m,nk,root;
void ckmin(ll &mi,ll yuy){mi=mi<yuy?mi:yuy;}
void ckmax(ll &mx,ll yuy){mx=mx>yuy?mx:yuy;}
using std::min;
using std::max;
void updata(int now)
{sum[now]=sum[ls]+sum[rs]+val[now];for(int i=0;i<K;i++){L[now][i]=R[now][i]=p[now][i];if(ls) L[now][i]=min(L[now][i],L[ls][i]),R[now][i]=max(R[now][i],R[ls][i]);if(rs) L[now][i]=min(L[now][i],L[rs][i]),R[now][i]=max(R[now][i],R[rs][i]);}
}
bool cmp(int a,int b){return p[a][nk]<p[b][nk];}
void build(int &now,int l,int r,int k)
{if(l>r) return;int mid=l+r>>1;nk=k;std::nth_element(s+l,s+mid,s+r+1,cmp);now=s[mid];build(ls,l,mid-1,k^1),build(rs,mid+1,r,k^1);updata(now);
}
void get(int now,ll &mi,ll &mx)
{ll bee=a*L[now][0]+b*L[now][1];ckmin(mi,bee),ckmax(mx,bee);bee=a*L[now][0]+b*R[now][1];ckmin(mi,bee),ckmax(mx,bee);bee=a*R[now][0]+b*L[now][1];ckmin(mi,bee),ckmax(mx,bee);bee=a*R[now][0]+b*R[now][1];ckmin(mi,bee),ckmax(mx,bee);
}
ll query(int now)
{if(!now) return 0;ll mi=inf,mx=-inf;get(now,mi,mx);if(mx<c) return sum[now];if(mi>=c) return 0;return (a*p[now][0]+b*p[now][1]<c?val[now]:0)+query(ls)+query(rs);
}
int main()
{n=read(),m=read();for(int i=1;i<=n;i++){p[i][0]=read(),p[i][1]=read(),sum[i]=val[i]=read();s[i]=i;}build(root,1,n,0);for(int i=1;i<=m;i++){a=read(),b=read(),c=read();printf("%lld\n",query(root));}return 0;
}

2019.2.5

转载于:https://www.cnblogs.com/butterflydew/p/10352854.html

洛谷 P4475 巧克力王国 解题报告相关推荐

  1. 洛谷1056 排座椅 解题报告

    洛谷1056 排座椅 本题地址: http://www.luogu.org/problem/show?pid=1056 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头 ...

  2. 洛谷1067 多项式输出 解题报告

    洛谷1067 多项式输出 本题地址: http://www.luogu.org/problem/show?pid=1067 题目描述 一元 n 次多项式可用如下的表达式表示: 其中,aixi称为 i ...

  3. 洛谷 P4706 取石子 解题报告

    P4706 取石子 题目描述 现在 Yopilla 和 yww 要开始玩游戏! 他们在一条直线上标记了 \(n\) 个点,从左往右依次标号为 \(1, 2, ..., n\) .然后在每个点上放置一些 ...

  4. 洛谷 P1309 瑞士轮 解题报告

    P1309 瑞士轮 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平,偶然性较低 ...

  5. 洛谷 P2184 贪婪大陆 解题报告

    P2184 贪婪大陆 题目背景 面对蚂蚁们的疯狂进攻,小\(FF\)的\(Tower\) \(defence\)宣告失败--人类被蚂蚁们逼到了\(Greed\) \(Island\)上的一个海湾.现在 ...

  6. 洛谷 P1136 迎接仪式 解题报告

    P1136 迎接仪式 题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出&q ...

  7. 洛谷 P2596 [ZJOI2006]书架 解题报告

    P2596 [ZJOI2006]书架 题目描述 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书, ...

  8. 洛谷 P3975 [TJOI2015]弦论 解题报告

    P3975 [TJOI2015]弦论 题目描述 为了提高智商,ZJY开始学习弦论.这一天,她在<String theory>中看到了这样一道问题:对于一个给定的长度为\(n\)的字符串,求 ...

  9. 洛谷 P2327 [SCOI2005]扫雷 解题报告

    题目 题目分析 题目将扫雷游戏简化,改为只有一列有雷的版本 a[i] 表示第 i 格的数字 f[i][j][k]表示当前做到第 i 个位置,第 i 个位置的状态为 j(1表示无雷,2雷),第 i+1  ...

最新文章

  1. 只需3行代码自动生成高性能模型,支持4项任务,亚马逊发布开源库AutoGluon
  2. C什么k什么_G、D、C、Z、T、K、L、Y,这些字母和火车级别有什么关系
  3. 没学过编程能学python吗_没有编程基础,可以自学Python吗?
  4. Javascript中的日期函数[zz]
  5. python网站开发linux_使用Python编写Linux系统守护进程实例
  6. (J2EE学习笔记)解决Hibernate删除异常:deleted object would be re-saved by cascade
  7. 防沉迷人脸识别可以扫照片吗_人脸识别的智能门锁到底安不安全?用照片可以打开是真的吗?...
  8. python 坐标轴刻度 格式_matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)...
  9. c语言银行家算法模拟程序,C语言实现 操作系统 银行家算法
  10. Only a type can be imported解决方法
  11. php中级联,php级联
  12. 上传文件中文乱码问题修复
  13. [开源项目]_[C++ CSDN博客下载-CSDN博客导出-CSDN博客备份工具]
  14. java 重载的特征_Java中方法的重载详解
  15. wps表格l制作甘特图_WPS如何用Excel制作甘特图
  16. 初次Blender建模遇到的问题与解决方法(二)
  17. 【文章】《陋室铭》《陋妻铭》《微信铭》《交友铭》《老人铭》
  18. 20155313 杨瀚 《网络对抗技术》实验二 后门原理与实践
  19. 怎样成为公司喜欢的人?小技巧
  20. Python判断一个词语是不是人名

热门文章

  1. windows防火墙命令
  2. 使用NPIO操作Excel
  3. Win7 wifi热点设置( 转载)
  4. 支付宝支付 第二集:傻瓜式教程->获取支付的RSA公钥和私钥
  5. python统计excel中重复数据_EXCEL公式解读:统计不重复个数
  6. iframe 返回上一页_寻找高颜值小姐姐难吗!直到我在Github上发现了这个Python库
  7. hive导数据到mysql 自增主键出错_老大问我:“建表为啥还设置个自增 id ?用流水号当主键不正好么?”...
  8. 同一个电脑可安装多个python版本吗_同一台电脑安装不同版本的python(python2.7和python3.7)...
  9. java 滚轮页面缩放_急..JAVA 在画布上画拖动滚动条可扩大缩小的长方形
  10. 绝地求生 android版支持蓝牙吗,绝地求生怎么蓝牙耳机设置听脚步 | 手游网游页游攻略大全...