当前位置:网站首页>(2022牛客多校五)B-Watches(二分)
(2022牛客多校五)B-Watches(二分)
2022-08-02 06:45:00 【AC__dream】
题目:
样例输入:
4 5
3 4 5 6
样例输出:
1
题意:给定n件商品的价格,如果你选购第k件商品,那么购买第i件物品的花费就是ai+k*i,问m元最多能买多少件(第i件是原序列中的第i个)
分析:我们容易发现的一点是答案具有单调性,我能买k件物品,那么我就一定能买k-1件商品,这是显然的,所以我们就可以对商品进行排序,对于每次二分的k我们都需要按照ai+k*i按照从小到大进行排序,然后从前往后贪心地选取即可,看用m元最多能买多少件商品,如果大于k返回true,否则返回false。
下面是代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
const int N=1e5+10;
struct node{
int id,v;
}p[N];
int mid,n,m;
bool cmp(node a,node b)
{
return a.v+a.id*mid<b.v+b.id*mid;
}
bool check(int k)
{
long long ans=0;
sort(p+1,p+n+1,cmp);
for(int i=1;i<=k;i++)
ans+=p[i].v+1ll*p[i].id*k;
return ans<=m;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
scanf("%d",&p[i].v),p[i].id=i;
int l=0,r=n;
while(l<r)
{
mid=l+r+1>>1;
if(check(mid)) l=mid;
else r=mid-1;
}
printf("%d",l);
return 0;
}
边栏推荐
猜你喜欢
张驰课堂:六西格玛培训工具——箱线图
交换--STP协议
堡垒机、堡垒机的原理
自然语言处理 文本预处理(上)(分词、词性标注、命名实体识别等)
【npm install 报错问题合集】- npm ERR! code ENOTEMPTY npm ERR! syscall rmdir
2022.07.31(LC_6133_分组的最大数量)
typescript ‘props‘ is declared but its value is never read 解决办法
速看!PMP新考纲、PMBOK第七版解读
【故障诊断分析】基于matlab FFT轴承故障诊断(包络谱)【含Matlab源码 2002期】
【图像去噪】基于matlab双立方插值和稀疏表示图像去噪【含Matlab源码 2009期】
随机推荐
Servlet
CSRF-跨站请求伪造-相关知识
论文《Deep Multifaceted Transformers for Multi-objective Ranking in Large-Scale E-commerce Recommender》
【故障诊断分析】基于matlab FFT轴承故障诊断【含Matlab源码 2001期】
线程的创建方式
逆变器锁相原理及DSP实现
PHP Warning: putenv() has been disabled for security reasons in phar
交换网络----三种生成树协议
C# FileInfo class
你认同这个观点吗?大多数企业的数字化都只是为了缓解焦虑
FaceBook社媒营销高效转化技巧分享
解决C#非静态字段、方法或属性“islandnum.Program.getIslandCount(int[][], int, int)”要求对象引用
自然语言处理 文本预处理(下)(张量表示、文本数据分析、文本特征处理等)
MQ带来的一些问题、及解决方案
PMP新考纲考试内容介绍
optional
张驰课堂:六西格玛培训工具——箱线图
_2_顺序表
[Dataset][VOC] Eyewear dataset 6000 in VOC format
【心电信号】基于matlab心率检测【含Matlab源码 1993期】