bzoj 4951: [Wf2017]Money for Nothing【分治】
参考:https://blog.csdn.net/herobrine_tkj/article/details/78404426?locationNum=8&fps=1
为什么从1开始存就挂了,这是个未解之谜...
把两个人条件转换为二维平面内的点,零件生产公司是左下角,零件消费公司是右上角,求最大矩形
然后画图可知这个是单调的,所以把零件生产公司和零件消费公司一起分治即可
注意一开始要x-y排序之后去重,保持x和y的单调
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=500005;
int n,m;
bool del[N];
struct qwe
{
int x,y;
}a[N],b[N];
bool cmp(const qwe &a,const qwe &b)
{
return a.x<b.x||(a.x==b.x&&a.y<b.y);
}
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
int pre(qwe*a,int n,int type)
{
sort(a,a+n,cmp);
memset(del,0,sizeof(del));
if(type==0)
{
int la=0;
for(int i=1;i<n;i++)
{
if(a[i].y>=a[la].y)
del[i]=1;
else
la=i;
}
}
else
{
int la=n-1;
for(int i=n-2;i>=0;i--)
{
if(a[i].y<=a[la].y)
del[i]=1;
else
la=i;
}
}
int nn=0;
for(int i=0;i<n;i++)
if(!del[i])
a[nn++]=a[i];
return nn;
}
long long clc(int x,int y)
{
return (b[y].x<a[x].x&&b[y].y<a[x].y)?0:1ll*(b[y].x-a[x].x)*(b[y].y-a[x].y);
}
long long wk(int l1,int r1,int l2,int r2)
{
if(l1==r1)
return 0;
int mid=(l1+r1)>>1,w=l2;
for(int i=l2+1;i<r2;i++)
if(clc(mid,w)<clc(mid,i))
w=i;
return max(clc(mid,w),max(wk(l1,mid,l2,w+1),wk(mid+1,r1,w,r2)));
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
a[i].x=read(),a[i].y=read();
for(int i=0;i<m;i++)
b[i].x=read(),b[i].y=read();
n=pre(a,n,0);
m=pre(b,m,1);
printf("%lld",wk(0,n,0,m));
return 0;
}
bzoj 4951: [Wf2017]Money for Nothing【分治】的更多相关文章
- BZOJ 4951 [WF2017]Money for Nothing (决策单调优化DP+分治)
题目大意:略 题目传送门 不愧是$World final$的神题,代码短,思维强度大,细节多到吐..调了足足2h 贪心 我们利用贪心的思想,发现有一些工厂/公司是非常黑心的 以工厂为例,对于一个工厂$ ...
- @bzoj - 4951@ [Wf2017]Money for Nothing
目录 @description@ @solution@ @accepted code@ @details@ @description@ 在这道题种你需要解决一个全世界人类从存在起就在面临的最深刻的问题 ...
- Luogu 3810 & BZOJ 3262 陌上花开/三维偏序 | CDQ分治
Luogu 3810 & BZOJ 3263 陌上花开/三维偏序 | CDQ分治 题面 \(n\)个元素,每个元素有三个值:\(a_i\), \(b_i\) 和 \(c_i\).定义一个元素的 ...
- 4951: [Wf2017]Money for Nothing 决策单调性 分治
Bzoj4951:决策单调性 分治 国际惯例题面:一句话题面:供应商出货日期为Ei,售价为Pi:用户收购截止日期为Si,收购价格为Gi.我们要求max((Si-Ej)*(Gi-Pj)).显然如果我们把 ...
- BZOJ.4598.[SDOI2016]模式字符串(点分治 Hash)
LOJ BZOJ 洛谷 点分治.考虑如何计算过\(rt\)的答案. 记\(pre[i]\)表示(之前的)子树内循环匹配了\(S\)的前缀\(i\)的路径有多少,\(suf[i]\)表示(之前的)子树内 ...
- BZOJ.3784.树上的路径(点分治 贪心 堆)
BZOJ \(Description\) 给定一棵\(n\)个点的带权树,求树上\(\frac{n\times(n-1)}{2}\)条路径中,长度最大的\(m\)条路径的长度. \(n\leq5000 ...
- bzoj 1095 Hide 捉迷藏 - 动态点分治 -堆
Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条双 ...
- BZOJ 3295 动态逆序对 | CDQ分治
BZOJ 3295 动态逆序对 这道题和三维偏序很类似.某个元素加入后产生的贡献 = time更小.pos更小.val更大的元素个数 + time更小.pos更大.val更小的元素个数. 分别用类似C ...
- BZOJ 2152: 聪聪可可 树分治
2152: 聪聪可可 Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一 ...
随机推荐
- loj6165 一道水题(线性筛)
题目: https://loj.ac/problem/6165 分析: 最直接的想法就是把1~n的所有数分解质因数,然后每个素数的幂取max 我们首先来看看一共可能有哪些素数? 实际上这些素因数恰好就 ...
- how to read openstack code: request extension
We have learned resource extension and action extension. This post we will write a request extension ...
- Ansible 详细用法说明(二)
setup:获取指定主机的facts. ===================================facts就是变量,内建变量 .每个主机的各种信息,cpu颗数.内存大小等.会存在fact ...
- react 项目中 引入 bootstrap
react-bootstrap是一个非常受欢迎的针对react封装过的bootstrap,它本身不包含css,所以也是需要使用bootstrap原生库. 在create-react-app建的项目目录 ...
- C++第9周(春)项目5 - 一元一次方程类
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目5]设计一元一次方程类.求形如ax+b= ...
- XxPay支付系统-boot版本 使用
https://segmentfault.com/a/1190000016987391?utm_source=tag-newest 有三个版本: spring boot 版本: spring clou ...
- Linux下通过find命令进行rm文件删除的小技巧
我们常常会通过find命令进行批量操作.如:批量删除旧文件.批量改动.基于时间的文件统计.基于文件大小的文件统计等.在这些操作其中,因为rm删除操作会导致文件夹结构变化,假设要通过find结合r ...
- C++问题记录
问题idx: 1) 怎么在VS2010下新建一个像VC6.0 中那样的控制台C++程序. cdate: 2014-4-24 A1: VC6.0 对标准C++集的支持不是太好, VS2010也有一些吧, ...
- 鉴权应用服务器 app客户端 web服务端 安全令牌(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret)
设置EndPoint和凭证 移动终端是一个不受信任的环境,把AccessKeyId和AccessKeySecret直接保存在终端用来加签请求,存在极高的风险.建议只在测试时使用明文设置模式,业务应用推 ...
- Installing Node.js via package manager
https://nodejs.org/en/download/package-manager/