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
跟着靖靖做题%%%%% 这题一看就觉得和之前的某场模拟赛的一道题很像,找假如某行某列的最大值一样的就可以只堆一个,跑匈牙利就行 一开始以为箱子不能移动-_-! 然后有个坑,大家都知道当这个位置有箱子就 ...
随机推荐
- POJ1270【拓扑排序+DFS】
题意: 先给你一个字符串,让你给他们排序: 再给你一行,在这一行,每两个就是第一个需要在第二个前面: 思路: //DFS写多了感觉好有啊,就是排序过程中可能会有多种情况. //我们考虑一下怎么排好一个 ...
- HDU 6183 Color it(动态开点线段树)
题目原网址:http://acm.hdu.edu.cn/showproblem.php?pid=6183 题目中文翻译: Time Limit: 20000/10000 MS (Java/Others ...
- AtCoder Regular Contest 076 E - Connected?
题目传送门:https://arc076.contest.atcoder.jp/tasks/arc076_c 题目大意: 给定一个\(R×C\)的矩阵,然后给定\(N\)对点,每对点坐标为\((X_{ ...
- (转)深入理解Java对象的创建过程
参考来源:http://blog.csdn.net/justloveyou_/article/details/72466416 摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一 ...
- Backbone.js入门教程第二版笔记(2)
关于手动触发router,之前看到的例子都是通过在url后面加上#xxx或者点击一个a链接方法来触发, 还有一种情况是通过触发一种规则,来触发另一种规则(表述无能),比如这个例子中,我在url后面加上 ...
- 17972 Golden gun的巧克力
17972 Golden gun的巧克力 时间限制:1000MS 内存限制:65535K提交次数:93 通过次数:13 收入:124 题型: 编程题 语言: G++;GCC;JAVA Descr ...
- XSS漏洞解析(三)
系统存在xss漏洞就容易引发CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为: ...
- P1720 月落乌啼算钱
题目背景 (本道题目木有以藏歌曲……不用猜了……) <爱与愁的故事第一弹·heartache>最终章. 吃完pizza,月落乌啼知道超出自己的预算了.为了不在爱与愁大神面前献丑,只好还是硬 ...
- RPC之远程过程调用
一. 简介 将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作远程过程调用(Remote Procedure Call)或者 RPC. RPC是一个计算机通信协议. 1. 类比: 将计算机服 ...
- 【学习笔记】深入理解js原型和闭包(14)——从【自由变量】到【作用域链】
先解释一下什么是“自由变量”. 在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量.如下图 如上程序中,在调用fn()函数时,函数体中第6 ...