BZOJ1071
来源:互联网 发布:cal Linux 编辑:程序博客网 时间:2024/05/17 04:26
传送门:BZOJ1071
枚举minH,minV,单调性优化+计不可行方案数即可。
代码上的细节较多。
代码上的小细节见下。
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define N 5050using namespace std;int A,B,C;struct KSD{ int h,v; long long s; void keep(){ s=A*h+B*v; }};KSD x[5005],y[5005],z[5005],r[5005];int n;int ans;bool cmph(KSD a,KSD b){ return a.h<b.h;}bool cmpv(KSD a,KSD b){ return a.v<b.v;}bool cmps(KSD a,KSD b){ return a.s<b.s;}void Solve(){ sort(x,x+n,cmph); sort(y,y+n,cmpv); sort(z,z+n,cmps); for(int i=0;i<n;i++){ int pos=0,p=0,cnt=0; for(int j=0;j<n;j++) if(x[i].h<=y[j].h&&x[i].v>=y[j].v) r[pos++]=y[j]; for(int j=0;j<pos;j++){ long long res=A*x[i].h+B*r[j].v+C; while(p<n&&z[p].s<=res){ if(z[p].v<r[j].v||z[p].h<x[i].h) cnt++; p++; } ans=max(ans,p-cnt); if(A*r[j].h+B*r[j].v<=res) cnt++; //在51行中不会被检出,但下一次循环应舍弃。 } } printf("%d\n",ans);}void Readdata(){ freopen("loli.in","r",stdin); scanf("%d%d%d%d",&n,&A,&B,&C); for(int i=0;i<n;i++){ scanf("%d%d",&x[i].h,&x[i].v); x[i].keep(); z[i]=y[i]=x[i]; }}void Close(){ fclose(stdin); fclose(stdout);}int main(){ Readdata(); Solve(); Close(); return 0;}
0 0
- BZOJ1071
- bzoj1071
- bzoj1071
- [BZOJ1071][SCOI2007][堆]组队
- 【SCOI2007】【BZOJ1071】组队
- BZOJ1071 [SCOI2007]组队
- 【bzoj1071】[SCOI2007]组队
- bzoj1071: [SCOI2007]组队
- 【BZOJ1071】[SCOI2007]组队
- bzoj1071 [SCOI2007]组队
- 【bzoj1071】[SCOI2007]组队
- 【BZOJ1071】【SCOI2007】组队 利用单调性的双指针
- 【BZOJ1071】【SCOI2007】组队 利用单调性的双指针
- mac电脑jdk版本切换
- HttpInvoker SSL双向认证远程接口调用
- android学习笔记 代码中隐藏标题栏
- HDU - 5396 Expression
- oracle表分区详解
- BZOJ1071
- 最小环
- java序列化
- UVA 11040 Add bricks in the wall
- mysql的mysqldump用法,重置数据库
- Gas Station
- Java学习--(十)final关键字
- Android 仿QQ首页的消息和电话的切换,首页的头部(完全用布局控制)
- SharePoint 2013 通过HttpModule 管理视图权限