【codeforces 812C】Sagheer and Nubian Market
生活随笔
收集整理的這篇文章主要介紹了
【codeforces 812C】Sagheer and Nubian Market
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目鏈接】:http://codeforces.com/contest/812/problem/C
【題意】
給你n個物品;
你可以選購k個物品;則
每個物品有一個基礎價值;
然后還有一個附加價值;
即為k*i;
這里i是這個物品的下標;(1..n中的某個整數);
然后你有預算S;
問你最多能買多少個物品ans;
并求出買ans個物品的最小花費;
【題解】
二分買的物品數量k;
然后就能獲取出每個物品的價格了;
即a[i]+i*k;
放到b數組里面;
升序排;
然后選取前k個;
看看超不超預算;
不超就記錄答案,并讓物品數量變大;
否則變小;
貌似在算的時候會爆int;
【Number Of WA】
1
【完整代碼】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
#define Open() freopen("F:\\rush.txt","r",stdin)
#define Close() ios::sync_with_stdio(0),cin.tie(0)typedef pair<int,int> pii;
typedef pair<LL,LL> pll;const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 1e5+100;LL n,s,tans;
LL a[N],b[N];bool ok(LL k){for (LL i = 1;i <= n;i++){b[i] = a[i]+i*k;}sort(b+1,b+1+n);LL temp = 0;rep1(i,1,k){temp+=b[i];if (temp>s) return false;}tans = temp;return true;
}int main(){//Open();Close();//scanf,puts,printf not use//init??????cin >> n >> s;rep1(i,1,n){cin >> a[i];}int l = 0,r = n,ans = 0;while (l <= r){int mid = (l+r)>>1;if (ok(mid)){ans = mid;l = mid+1;}elser = mid-1;}cout << ans <<' '<<tans<<endl;return 0;
}
轉載于:https://www.cnblogs.com/AWCXV/p/7626287.html
總結
以上是生活随笔為你收集整理的【codeforces 812C】Sagheer and Nubian Market的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卡斯罗多少钱啊?
- 下一篇: 求一个加油个性签名。