Codeforces Round #417 C. Sagheer and Nubian Market
On his trip to Luxor and Aswan, Sagheer went to a Nubian market to buy some souvenirs for his friends and relatives. The market has some strange rules. It contains n different items numbered from 1 to n. The i-th item has base cost ai Egyptian pounds. If Sagheer buysk items with indices x1, x2, ..., xk, then the cost of item xj is axj + xj·k for 1 ≤ j ≤ k. In other words, the cost of an item is equal to its base cost in addition to its index multiplied by the factor k.
Sagheer wants to buy as many souvenirs as possible without paying more than S Egyptian pounds. Note that he cannot buy a souvenir more than once. If there are many ways to maximize the number of souvenirs, he will choose the way that will minimize the total cost. Can you help him with this task?
The first line contains two integers n and S (1 ≤ n ≤ 105 and 1 ≤ S ≤ 109) — the number of souvenirs in the market and Sagheer's budget.
The second line contains n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 105) — the base costs of the souvenirs.
On a single line, print two integers k, T — the maximum number of souvenirs Sagheer can buy and the minimum total cost to buy these ksouvenirs.
3 11
2 3 5
2 11
4 100
1 2 5 6
4 54
1 7
7
0 0
Note
In the first example, he cannot take the three items because they will cost him [, , ] with total cost . If he decides to take only two items, then the costs will be [, , ]. So he can afford the first and second items. In the second example, he can buy all items as they will cost him [, , , ]. In the third example, there is only one souvenir in the market which will cost him pounds, so he cannot buy it.
Note
题目大意:
在一个商店里一共有n件商品,每一件都有一个基础价格,但是这个商店有一个奇怪的规定,
每一件商品最后的价格为 基础价格+买的商品总件数*商品的坐标(即这是第几件商品)
现给定 商品的件数和你所拥有的钱数, 问你最多能卖几件商品 花的总钱数是多少 解题思路:
总体思路为:二分查找 先找出最多能买的商品的件数,然后在计算出总花费 AC代码:
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll; int main ()
{
ll n,s,sum,x,y,l,r;
ll ans[],a[];
int i;
cin>>n>>s;
for (i = ; i <= n; i ++)
cin>>a[i]; l = ,r = n; // 左标签和右标签
x = y = ;
while (l <= r){
sum = ;
ll mid = (r+l)>>; // 二分枚举能购买的商品件数
for (i = ; i <= n; i ++)
ans[i] = a[i]+i*mid;
sort(ans+,ans++n);
for (i = ; i <= mid; i ++)
sum += ans[i];
if (sum <= s){
x = mid;
y = sum;
l = mid+;
}
else
r = mid-;
}
cout<<x<<" "<<y<<endl;
return ;
}
以下版本思路同上;
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; int main ()
{
__int64 n,s;
__int64 ans[],a[];
int i;
while (~scanf("%I64d%I64d",&n,&s))
{
for (i = ; i <= n; i ++)
scanf("%I64d",&a[i]); int l = ,r = n;
__int64 sum,x=,y=;
while (l <= r){
sum = ;
long long mid = (l+r)>>;
for (i = ; i <= n; i ++)
ans[i] = a[i]+i*mid;
sort(ans+,ans++n);
for (i = ; i <= mid; i ++)
sum += ans[i];
if (sum > s)
r = mid-;
else
l = mid+;
}
for (i = ; i <= n; i ++)
ans[i] = a[i]+i*r;
sort(ans+,ans++n);
for (i = ; i <= r; i ++)
y += ans[i];
printf("%d %I64d\n",r,y);
}
return ;
}
Codeforces Round #417 C. Sagheer and Nubian Market的更多相关文章
- Codeforces Round #417 B. Sagheer, the Hausmeister
B. Sagheer, the Hausmeister time limit per test 1 second memory limit per test 256 megabytes Som ...
- AC日记——Sagheer and Nubian Market codeforces 812c
C - Sagheer and Nubian Market 思路: 二分: 代码: #include <bits/stdc++.h> using namespace std; #defin ...
- Codeforces J. Sagheer and Nubian Market(二分枚举)
题目描述: Sagheer and Nubian Market time limit per test 2 seconds memory limit per test 256 megabytes in ...
- CodeForce-812C Sagheer and Nubian Market(二分)
Sagheer and Nubian Market CodeForces - 812C 题意:n个货物,每个货物基础价格是ai. 当你一共购买k个货物时,每个货物的价格为a[i]+k*i. 每个货物只 ...
- [Codeforces Round#417 Div.2]
来自FallDream的博客,未经允许,请勿转载,谢谢. 有毒的一场div2 找了个1300的小号,结果B题题目看错没交 D题题目剧毒 E题差了10秒钟没交上去. 233 ------- A.Sag ...
- Codeforces812C Sagheer and Nubian Market 2017-06-02 20:39 153人阅读 评论(0) 收藏
C. Sagheer and Nubian Market time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Codeforces Round #417 (Div. 2)A B C E 模拟 枚举 二分 阶梯博弈
A. Sagheer and Crossroads time limit per test 1 second memory limit per test 256 megabytes input sta ...
- Codeforces Round #417 (Div. 2) 花式被虐
A. Sagheer and Crossroads time limit per test 1 second memory limit per test 256 megabytes input sta ...
- codeforces round 417 div2 补题 CF 812 A-E
A Sagheer and Crossroads 水题略过(然而被Hack了 以后要更加谨慎) #include<bits/stdc++.h> using namespace std; i ...
随机推荐
- ActiveMQ安装及使用
1 安装环境 1.需要jdk2.安装Linux系统.生产环境都是Linux系统. 2 安装步骤 第一步: 把ActiveMQ 的压缩包上传到Linux系统.第二步:解压缩. 第三步:关闭防火墙 临时关 ...
- guava学习:guava集合类型-Bimap
学习guava让我惊喜的第二个接口就是:Bimap BiMap是一种特殊的映射其保持映射,同时确保没有重复的值是存在于该映射和一个值可以安全地用于获取键背面的倒数映射. 最近开发过程中,经常会有这种根 ...
- 何为session?
何为session 在计算机中,尤其是在网络应用中,称为"会话控制".session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存储 ...
- 2016年学习JavaScript是怎样的一种体验(转)
转自:http://www.zcfy.cc/article/how-it-feels-to-learn-javascript-in-2016-hacker-noon-1871.html 在这篇文章的写 ...
- <python数据挖掘入门与实战>代码
从百度搜索,净是csdn下载的,现在csdn下载弄的很恶心,垄断并且只想赚钱了,不想使用, 去github上找到了. https://github.com/PacktPublishing/Learni ...
- Hudson-ci/Using Hudson/Installing Hudson/Installing Hudson RPM--官方文档
< Hudson-ci | Using Hudson | Installing Hudson(Redirected from Hudson-ci/Installing Hudson RPM) ...
- xcopy命令的其他参数
xcopy /s /e /h "c:\123" "D:\123\" 后面多一个斜杠,让程序知道是目录 以下还给您提供了 xcopy 命令的其他参数: /A 仅复 ...
- Python——爬虫学习1
爬虫了解一下 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. Python的安装 本篇教程采用Python3 来写,所以你需要给你的电脑装上Python ...
- C# 相对路径指定详解
1. 根目录 .\\ 或者直接给出文件名称,是找根目录的路径. 如:path = "gs.mdb" 与 path = ".\\gs.mdb"是一个意思. 2. ...
- POJ 1006 Biorhythms --中国剩余定理(互质的)
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 103539 Accepted: 32012 Des ...