题面:[SCOI2007]组队

题解:

  一开始固定H然后找性质找了很久也没有找到任何有用的东西。。。。。。

  然后大佬告诉我一个神奇的方法。。。

  首先我们化一波式子:

  设$H$表示高度的最小值,$V$表示速度的最小值

  $$A(h[i] - H) - B(v[i] - V) \le C$$
  $$Ah[i] - AH + Bv[i] - BV \le C$$  

  如果我们枚举$h[i]$,那么$h[i]$就可以被当做一个常量,于是我们把常量都放在一起。
  设$$S_{i} = Ah[i] - AH - C$$
  则$$S_{i} + BV[i] - BV \le 0$$
  $$S_{i} + BV[i] <= BV$$
  $$\frac{S_{i}}{B} + V[i] \le V \le V[i]$$

  最后那个$\le V[i]$是因为V是最小值.

  于是我们可以发现,在固定H的情况下,对于任意一个V[i],它可以对在$[\frac{S_{i}}{B} + V[i], V[i]]$之间的V产生贡献。

  于是对于每个固定的H,我们的最大答案就看V最大能被多少个点产生贡献。

  差分维护即可

 #include<bits/stdc++.h>
using namespace std;
#define R register int
#define AC 5500
#define ac 101000
#define LL long long int n, ans, maxn, d[ac];
int A, B, C; struct node{
int h, v;
friend bool operator < (const node &a, const node &b){return a.h < b.h;}
}s[AC]; inline int read()
{
int x = ;char c = getchar();
while(c > '' || c < '') c = getchar();
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x;
} inline void upmax(int &a, int b){
if(b > a) a = b;
} inline void pre()
{
n = read(), A = read(), B = read(), C = read();
for(R i = ; i <= n; i ++)
{
s[i].h = read(), s[i].v = read();
upmax(maxn, s[i].v);
}
sort(s + , s + n + );
} void work()
{
for(R i = ; i <= n; i ++)//枚举minh
{
int H = s[i].h, all = H * A;
for(R j = i; j <= n; j ++)//在h符合条件的点当中选点来更新minv
{
int l = (s[j].h * A - all - C) / B + s[j].v, r = s[j].v;
if(l <= ) l = ;
if(l > r) continue;
++ d[l], -- d[r + ];
}
int tmp = ;
for(R j = ; j <= maxn; j ++)
tmp += d[j], upmax(ans, tmp), d[j] = ;
}
printf("%d\n", ans);
} int main()
{
freopen("in.in", "r", stdin);
pre();
work();
fclose(stdin);
return ;
}

  不知道为什么卡不过大佬QAQ。。。

[SCOI2007]组队 差分的更多相关文章

  1. BZOJ 1071 [SCOI2007]组队

    1071: [SCOI2007]组队 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1330  Solved: 417[Submit][Status][ ...

  2. bzoj1071[SCOI2007]组队

    1071: [SCOI2007]组队 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2472  Solved: 792[Submit][Status][ ...

  3. 【BZOJ1071】[SCOI2007]组队(神仙题)

    [BZOJ1071][SCOI2007]组队(神仙题) 题面 BZOJ 洛谷 题解 首先把式子整理一下,也就是\(A*h+B*v\le C+A*minH+B*minV\) 我们正常能够想到的做法是钦定 ...

  4. 1071: [SCOI2007]组队

    1071: [SCOI2007]组队 https://lydsy.com/JudgeOnline/problem.php?id=1071 分析: dp+单调性. A*(hi–minH)+B*(si–m ...

  5. 【题解】SCOI2007组队

    恩……为什么大家都这么执着于 \(O(n^{2})\) 的复杂度捏?如果接受 \(O(n^{2} + nV)\) 的复杂度,那这题可不是道**题吗( • ̀ω•́ )✧ 首先把所有的人按照身高排个序, ...

  6. 1071: [SCOI2007]组队 - BZOJ

    Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有 ...

  7. BZOJ.1071.[SCOI2007]组队(思路)

    题目链接 三个限制: \(Ah-AminH+Bv-BminV\leq C\ \to\ Ah+Bv\leq C+AminH+BminV\) \(v\geq minV\) \(h\geq minH\) 记 ...

  8. BZOJ1071: [SCOI2007]组队【双指针】【思维好题】

    Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有 ...

  9. [SCOI2007]组队

    嘟嘟嘟 这题有人说部分分O(n3)暴力,然而我暴力都没写过,调了半天也没用……还是看题解吧 首先,咱把A * ( h – minH ) + B * ( s – minS ) <= C 变个型,得 ...

随机推荐

  1. “网易有钱”sketch使用分享

    本文来自网易云社区 写在开头,关于ps与sketch之间的优劣网上已经有很多分享,大家有兴趣可以百度,其中对否我们在这里不予评价.在移动互联网时代每个app从几十到上百张页面,如果用ps绘制一个个页面 ...

  2. WPF Issues

    Grid row height is star, but the height setting does not work in a prism:region Problem: My original ...

  3. Django自定义管理表单

    修改polls/admin.py: from django.contrib import admin from .models import Choice, Question class Choice ...

  4. Selenium安装(二)

    安装python 安装Selenium之前首先来说一下Python,python是一门动态性语言,python的编写比较灵活,简洁,开发效率高.因此以python结合selenium来进行自动化测试. ...

  5. 【WXS数据类型】RegExp

    生成 regexp 对象需要使用 getRegExp函数,注意与JS的使用方法不同( new RegExp(pattern,modifiers);) 原型:getRegExp(pattern, mod ...

  6. [SHELL]输出目录下所有的可执行文件,批量创建用户

    #!/bin/bash IFS=: for folder in $PATH #PATH变量分隔符为: do echo $folder echo ------------------ for file ...

  7. Java学习 · 初识 面向对象基础二

    Package 为什么需要使用package a)   解决类重名的问题 b)   便于管理类 怎么使用package a)   类的第一句非注释性语句 b)   命名:域名倒着写,再加上模块名 注意 ...

  8. 使用flume抓取tomcat的日志文件下沉到kafka消费

    Tomcat生产日志 Flume抓取日志下沉到kafka中 将写好的web项目打包成war包,eclise直接导出export,IDEA 在artifact中添加新的artifact-achieve项 ...

  9. 洛谷 P1706 全排列问题 :STL / dfs

    题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入输出格式 输入格式: n(1≤n≤9) 输出格式: 由1-n组成的所有不重复的数字序列, ...

  10. [递推+矩阵快速幂]Codeforces 1117D - Magic Gems

    传送门:Educational Codeforces Round 60 – D   题意: 给定N,M(n <1e18,m <= 100) 一个magic gem可以分裂成M个普通的gem ...