#417(div2) C. Sagheer and Nubian Market

Posted 早知如此绊人心,何如当初莫相识。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#417(div2) C. Sagheer and Nubian Market相关的知识,希望对你有一定的参考价值。

题意:给出n件商品价格和一个最大限额S,购买时商品的价格变为axj?+?xj·k,xj下标索引,k是购买数量,求最多能买几件和花费。

思路:二分+排序

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 
 5 ll a[100005];
 6 ll b[100005];
 7 ll n,s;
 8 ll sum;
 9 ll check(ll x){
10    sum=0;
11     for(int i=1;i<=n;i++)
12         b[i]=a[i]+i*x;
13     sort(b+1,b+1+n);
14     for(int i=1;i<=x;i++) sum+=b[i];
15     return sum;
16  }
17 int main(){
18     ll ssum=0;
19     ll x;
20     scanf("%I64d%I64d",&n,&s);
21     for(int i=1;i<=n;i++) {
22             scanf("%I64d",&a[i]);
23     }
24     ll l=1,r=n,mid,ans=0;
25     while(l<=r){
26         mid=(l+r)>>1;
27         if(check(mid)<=s){
28             l=mid+1,ans=mid;
29             ssum=sum;
30 
31         }
32         else r=mid-1;
33     }
34     cout<<ans<<" "<<ssum<<endl;
35 }

 

以上是关于#417(div2) C. Sagheer and Nubian Market的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #417 (Div. 2) C. Sagheer and Nubian Market 二分答案 +排序

#417 Div2 Problem C Sagheer and Nubian Market (二分 && std::accumulate)

#417(div2) B - Sagheer, the Hausmeister

#417 Div2 Problem B Sagheer, the Hausmeister (DFS && 枚举)

(博弈sg) Codeforces Round #417 (Div. 2) E Sagheer and Apple Tree

588 div2 C. Anadi and Domino