BZOJ.1071.[SCOI2007]组队(思路)
三个限制:
\(Ah-AminH+Bv-BminV\leq C\ \to\ Ah+Bv\leq C+AminH+BminV\)
\(v\geq minV\)
\(h\geq minH\)
记\(s=Ah+Bv\)。将序列按\(s\)从小到大排序。
\(n^2\)枚举\(minV,minH\)。如果固定\(minV\),从小到大枚举\(minH\)时,满足\(s\leq C+AminH+BminV\)的位置是单增的。统计答案时可以判一下是否满足\(v_i\geq minV\)。
但还有\(h_i\geq minH\)的限制。因为\(minH\)是递增的,之前满足条件的后来可能不满足。用一个堆维护之前加入的最小的\(h_i\)即可,不满足条件就弹出。
但是\(O(n^2\log n)\)过不去。
问题在于怎么处理\(h_i\geq minH\)。按\(h\)排序然后\(<minH\)的都减掉?显然会多减掉一些不满足另外两个条件而未被统计的。
再观察一下限制,把\(h,v\)分开:\(A(h-minH)\leq C+B(minV-v)\)。
显然左式满足\(\geq0\),那么也有\(0\leq C+B(minV-v)\to minV\leq v\leq \frac CB+minV\)。
好像就是\(v\)不能过大使得\(h\)过小?
\(v\leq\frac CB+minV\)时,限制一就成了\(A(h-minH)+(\leq C的值)\leq C\)。若\(h\leq minH\),显然满足这个\(s\)的限制。
如果在\(s\)满足条件且\(minV\leq v\leq \frac CB+minV\)时\(ans\)++,限制一二仍旧满足。
如果\(h<minH\)且\(minV\leq v\leq \frac CB+minV\),如上所说此时也满足\(s\)的限制,所以此时\(ans\)--减掉的就一定是之前统计过的了。所以就可以做到不重不漏了orz。
//976kb 2392ms
#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
typedef long long LL;
const int N=5005;
struct Node
{
int h,v; LL s;
}a[N],b[N];
inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
inline bool cmps(const Node &a,const Node &b)
{
return a.s<b.s;
}
inline bool cmph(const Node &a,const Node &b)
{
return a.h<b.h;
}
int main()
{
int n=read(),A=read(),B=read(),C=read();
for(int i=1; i<=n; ++i) a[i].h=read(), a[i].v=read(), a[i].s=1ll*A*a[i].h+1ll*B*a[i].v, b[i]=a[i];
std::sort(a+1,a+1+n,cmps);
std::sort(b+1,b+1+n,cmph);
int ans=0; a[n+1].s=1e18, b[n+1].h=0x7fffffff;
for(int i=1,CdivB=C/B; i<=n; ++i)
{//枚举minv
int mnv=a[i].v; LL mxv=CdivB+mnv,tmp=C+1ll*B*mnv;
for(int j=1,l=1,r=1,cnt=0; j<=n; ++j)
{//是从小到大枚举的minh啊→_→
while(a[r].s<=tmp+1ll*A*b[j].h)
cnt+=(a[r].v>=mnv && a[r].v<=mxv), ++r;
while(b[l].h<b[j].h)
cnt-=(b[l].v>=mnv && b[l].v<=mxv), ++l;
ans=std::max(ans,cnt);
}
}
printf("%d\n",ans);
return 0;
}
BZOJ.1071.[SCOI2007]组队(思路)的更多相关文章
- BZOJ 1071 [SCOI2007]组队
1071: [SCOI2007]组队 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1330 Solved: 417[Submit][Status][ ...
- 1071: [SCOI2007]组队
1071: [SCOI2007]组队 https://lydsy.com/JudgeOnline/problem.php?id=1071 分析: dp+单调性. A*(hi–minH)+B*(si–m ...
- 1071: [SCOI2007]组队 - BZOJ
Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有 ...
- bzoj1071[SCOI2007]组队
1071: [SCOI2007]组队 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 2472 Solved: 792[Submit][Status][ ...
- POJ 2711 Leapin' Lizards / HDU 2732 Leapin' Lizards / BZOJ 1066 [SCOI2007]蜥蜴(网络流,最大流)
POJ 2711 Leapin' Lizards / HDU 2732 Leapin' Lizards / BZOJ 1066 [SCOI2007]蜥蜴(网络流,最大流) Description Yo ...
- 【BZOJ1071】[SCOI2007]组队(神仙题)
[BZOJ1071][SCOI2007]组队(神仙题) 题面 BZOJ 洛谷 题解 首先把式子整理一下,也就是\(A*h+B*v\le C+A*minH+B*minV\) 我们正常能够想到的做法是钦定 ...
- [SCOI2007]组队 差分
题面:[SCOI2007]组队 题解: 一开始固定H然后找性质找了很久也没有找到任何有用的东西...... 然后大佬告诉我一个神奇的方法... 首先我们化一波式子: 设$H$表示高度的最小值,$V$表 ...
- bzoj 1067: [SCOI2007]降雨量
题目链接: bzoj 1067: [SCOI2007]降雨量 题解: 很简单的一道题,但代码里有许多细节需要注意,切容易出错,调了三个小时OTZ 做一个st表维护区间最大值就 在获得年份在序列中的po ...
- BZOJ 1073: [SCOI2007]kshort
二次联通门 : BZOJ 1073: [SCOI2007]kshort /* BZOJ 1073: [SCOI2007]kshort A* k短路 但是会爆一个点, 是卡A*的 */ #include ...
随机推荐
- 4.8cf自训
发现cf以前的好题真的很多.. cf 730j 01背包变形 感觉很好的题 /* 先处理出最少需要t个瓶子 dp[i][j][k]前i个取k个,容量为j时的水的体积 滚动数组搞一下 本题的状态转移必须 ...
- cf1107d 映射关系
#include<bits/stdc++.h> using namespace std; ][]; int judge(int i){ ;j<=n;j++) ][j]); ; } i ...
- PyCharm里面执行代码没问题,Jenkins执行时找不到第三方库
在PyCharm里面代码执行没问题 本地cmd执行也没问题 Jenkins执行时报错 原因是第三方库是用PyCharm安装的,后来在Jenkins服务器上用pip装好第三方库后,就可以执行了 再执行 ...
- springboot拦截器HandlerInterceptor详解
Web开发中,我们除了使用 Filter 来过滤请web求外,还可以使用Spring提供的HandlerInterceptor(拦截器). HandlerInterceptor 的功能跟过滤器类似,但 ...
- 论文阅读笔记十四:Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation(CVPR2015)
论文链接:https://arxiv.org/abs/1506.04924 摘要 该文提出了基于混合标签的半监督分割网络.与当前基于区域分类的单任务的分割方法不同,Decoupled 网络将分割与分类 ...
- XmlSerializer 实现序列化CDATA
[XmlIgnore] public string GuestRemarks { get; set; } [XmlElement("GuestRemarks")] public X ...
- Go之viper配置
这个模块功能强大,读取配置,命令行,监听配置改变. 堪称多面手,在k8s,docker中,都多有应用. 这套应用,主要包括cobra,pflag,viper三件套. 了解得差不多啦...:) pack ...
- [转] Web前端开发工程师常用技术网站整理
1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...
- 请推荐几个asp.net下做网站的好的开源框架
1.We7 CMS We7 CMS是由西部动力开发的一款充分发掘互联网Web2.0(如博客.RSS等)的信息组织优势,将其理念利用到政府企事业网站的构建.组织.管理中的网站建设和管理方面的产品. 系统 ...
- Flink--connect
用来将两个dataStream组装成一个ConnectedStreams 而且这个connectedStream的组成结构就是保留原有的dataStream的结构体:这样我们就可以把不同的数据组装成同 ...