bzoj4951 [Wf2017]Money for Nothing
题解:
答案显然是$max((q-p)*(e-d))$
依然先贪心。
对于工厂,我们倾向于$pi<pj,di<dj$的;
对于买家,我们倾向于$qi>qj,ei>ej$的。
于是将一定不是最优解的工厂和买家划掉。
然后我们发现这个东西是满足决策单调性的。
问我怎么证?画一个二维坐标系,然后将选中的点都画上,然后就理性易证了。
最后分治。
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 500050
#define ll long long
inline ll rd()
{
ll f=,c=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){c=*c+ch-'';ch=getchar();}
return f*c;
}
int n0,m0,n,m;
struct Pair
{
ll x,y;
Pair(){}
Pair(ll x,ll y):x(x),y(y){}
};
bool cmp1(Pair a,Pair b)
{
if(a.x!=b.x)return a.x<b.x;
return a.y<b.y;
}
bool cmp2(Pair a,Pair b)
{
if(a.x!=b.x)return a.x<b.x;
return a.y>b.y;
}
Pair a0[N],b0[N],a[N],b[N];
ll ans = ;
void divi(int l1,int r1,int l2,int r2)
{
if(l1>r1||l2>r2)return ;
if(l1==r1)
{
for(int i=l2;i<=r2;i++)
if(b[i].x>a[l1].x)ans = max(ans,(b[i].x-a[l1].x)*(b[i].y-a[l1].y));
return ;
}
if(l2==r2)
{
for(int i=l1;i<=r1;i++)
if(b[l2].x>a[i].x)ans = max(ans,(b[l2].x-a[i].x)*(b[l2].y-a[i].y));
return ;
}
int mid = (l2+r2)>>;
int pos=l1;
ll max_val=-0x3f3f3f3f3f3f3f3fll;
for(int i=l1;i<=r1;i++)
{
if(b[mid].x<=a[i].x&&b[mid].y<=a[i].y)continue;
if((b[mid].x-a[i].x)*(b[mid].y-a[i].y)>max_val)
{
pos = i;
max_val=(b[mid].x-a[i].x)*(b[mid].y-a[i].y);
}
}
ans=max(ans,max_val);
divi(l1,pos,l2,mid-);
divi(pos,r1,mid+,r2);
}
int main()
{
// freopen("33.in","r",stdin);
n0 = rd(),m0 = rd();
for(int i=;i<=n0;i++)
a0[i].x = rd(),a0[i].y = rd();
for(int i=;i<=m0;i++)
b0[i].x = rd(),b0[i].y = rd();
sort(a0+,a0++n0,cmp1);
sort(b0+,b0++m0,cmp2);
ll lim = 0x3f3f3f3f3f3f3f3fll;
for(int i=;i<=n0;i++)
if(a0[i].y<lim)
{
a[++n]=a0[i];
lim = a0[i].y;
}
for(int i=;i<=m0;i++)
{
while(m&&b[m].y<=b0[i].y)m--;
b[++m]=b0[i];
}
divi(,n,,m);
printf("%lld\n",ans);
return ;
}
bzoj4951 [Wf2017]Money for Nothing的更多相关文章
- 4951: [Wf2017]Money for Nothing 决策单调性 分治
Bzoj4951:决策单调性 分治 国际惯例题面:一句话题面:供应商出货日期为Ei,售价为Pi:用户收购截止日期为Si,收购价格为Gi.我们要求max((Si-Ej)*(Gi-Pj)).显然如果我们把 ...
- BZOJ4951 Wf2017Money for Nothing(决策单调性)
按时间排序,显然可能存在于答案中的公司价格应该单调递减.然后就可以大胆猜想感性证明其有决策单调性.具体地,设f(i,j)表示第i个消费公司和第j个生产公司搭配的获利,f(i,j)=(ti-tj)*(c ...
- 4950: [Wf2017]Mission Improbable
4950: [Wf2017]Mission Improbable Time Limit: 1 Sec Memory Limit: 512 MBSubmit: 608 Solved: 222[Sub ...
- 【WF2017】Mission Improbable
http://www.lydsy.com/JudgeOnline/problem.php?id=4950 对于俯视图很好解决,把所有不是0的位置拿到剩1就可以了. 对于正视图与侧视图,稍微想一下也能发 ...
- 【刷题】BZOJ 4950 [Wf2017]Mission Improbable
Description 那是春日里一个天气晴朗的好日子,你准备去见见你的老朋友Patrick,也是你之前的犯罪同伙.Patrick在编程竞赛上豪赌输掉了一大笔钱,所以他需要再干一票.为此他需要你的帮助 ...
- 【bzoj4952】[Wf2017]Need for Speed 二分
题目描述 已知$\sum\limits_{i=1}^n\frac{d_i}{s_i+c}=t$,求$c$ $(d_i>0,s_i+c>0)$ 输入 第一行包含两个整数n(1≤n≤1000) ...
- 【bzoj4950】【 [Wf2017]Mission Improbable】贪心+二分图匹配
(上不了p站我要死了,侵权度娘背锅) Description 那是春日里一个天气晴朗的好日子,你准备去见见你的老朋友Patrick,也是你之前的犯罪同伙.Patrick在编程竞赛 上豪赌输掉了一大笔钱 ...
- bzoj 4951: [Wf2017]Money for Nothing【分治】
参考:https://blog.csdn.net/herobrine_tkj/article/details/78404426?locationNum=8&fps=1 为什么从1开始存就挂了, ...
- bzoj4950: [Wf2017]Mission Improbable
跟着靖靖做题%%%%% 这题一看就觉得和之前的某场模拟赛的一道题很像,找假如某行某列的最大值一样的就可以只堆一个,跑匈牙利就行 一开始以为箱子不能移动-_-! 然后有个坑,大家都知道当这个位置有箱子就 ...
随机推荐
- POJ1017 【据说是贪心...】
题意: 有6种面积的格子,给出这些格子的数量,然后有6*6的格子去容纳这6种面基,问最少需要几个6*6格子,使得所有类型的小格子被容纳. 思路: 按照面积的从大到小放. 一开始还是太天真,还要用各种1 ...
- python __builtins__ filter类 (24)
24.'filter', 用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表.该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True ...
- Java中JRE、JDK和JVM的区别
一.三者的基本概念: JRE(Java Development Kit):Java的运行环境: JDK(Java Runtime Enviroment):Java开发工具包: JVM(Java Vir ...
- 笔记-JavaWeb学习之旅2
数据库的基本概念 1.数据库:DataBase 简称 DB,用于存储和管理数据的仓库 特点: 1.持久化存储数据的,其实数据库就是一个文件系统, 2.方便存储和管理数据 3.使用了统一操作数据库 -- ...
- hdu6201 transaction transaction transaction(from 2017 ACM/ICPC Asia Regional Shenyang Online)
最开始一直想着最短路,不过看完题解后,才知道可以做成最长路.唉,还是太菜了. 先上图: 只要自己添加两个点,然后如此图般求最长路即可,emmm,用SPFA可以,迪杰斯特拉也可以,或者别的都ok,只要通 ...
- Java笔记-序列化的注意点
1.使用serialVersionUID 在Eclipse中,如果一个类实现了Serializable接口,且没有给这个类设置一个serialVersionUID,就会有一个警告标志: The ser ...
- win32 指令大全
指令类型 助记符 (带*为特权指令) 对标志寄存器的影响 备注 说明 举例 ZF CF PF SF OF AF DF IF TF 数据传送类 数据传送 MOV 不影响标志位 Move MOV r/m3 ...
- RAID基础
磁盘类型 类型 IDE Integrated Drive Electronics SATA Srial ATA SCSI Small Computer System Interface FC Fibe ...
- Apache Kylin的框架介绍
不多说,直接上干货! Apache kylin 能提供低延迟(sub-second latency)的秘诀就是预计算,即针对一个星型拓扑结构的数据立方体,预计算多个维度组合的度量,然后将结果保存在hb ...
- BZOJ1132: [POI2008]Tro(叉积 排序)
题意 世上最良心题目描述qwq 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Sol 直接模拟是$n^3$的. 考虑先枚举一个$i$,那么我们要算的就是$\sum_ ...