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 ...
随机推荐
- Eclipse打开时“发现了以元素'd:skin'”开头的无效内容。此处不应含有子元素的解决方法
把有问题的 devices.xml 文件删除,再在sdk 里面 tools\lib 下找到devices.xml 文件,将这个文件拷贝到你删除的那个文件夹里,重启 eclipse 就 OK 啦!
- 静态类和静态方法,抽象类和抽象方法,new关键字,值类型和引用类型,接口
静态类和静态方法:静态成员是与类相关,而非实例相关:普通类中的静态成员:1.只能通过类名访问.2.静态方法中只能访问静态成员,或通过对象访问实例成员.3.多个对象共享同一个成员.静态类(一般用作工具类 ...
- shiro学习笔记_0400_自定义realm实现身份认证
自定义Realm实现身份认证 先来看下Realm的类继承关系: Realm接口有三个方法,最重要的是第三个方法: a) String getName():返回此realm的名字 b) boolean ...
- js读取cookie信息
1. 第一种方式读取cookie信息:用document.cookie.split(“; “)的方式把字符串分割成几个段,然后遍历整个数组 //javascript方法 function getCoo ...
- sourceTree git 空目录从远程仓库克隆代码出现warning: templates not found
解决办法: 在安装git时没有默认安装到c盘,而是安装到了d盘.在使用SourceTree进行代码克隆时提示warning: templates not found in D:\software\de ...
- 原来你是这样的http2......
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由mariolu发表于云+社区专栏 序言 目前HTTP/2.0(简称h2)已经在广泛使用(截止2018年8月根据Alexa流行度排名的头 ...
- Android组件--碎片(fragment)
1. 基本概念 参考资料:http://blog.csdn.net/lmj623565791/article/details/37970961/ 一.什么是事务: 事务是应用程序中一系列严密的操作,所 ...
- JSONP数据调用
json 是一种数据格式 jsonp 是一种数据调用的方式. 什么是JSONP 为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是 ...
- SQL Serever学习16——索引,触发器,数据库维护
sqlserver2014数据库应用技术 <清华大学出版社> 索引 这是一个很重要的概念,我们知道数据在计算机中其实是分页存储的,就像是单词存在字典中一样 数据库索引可以帮助我们快速定位数 ...
- window常用的快捷键
1.win+r打开运行命令 2.appwiz.cpl打开程序面板,进行程序的安装.卸载 输入win+r打开运行命令,输入appwiz.cpl 3.services.msc打开服务,一般用于启动或者关闭 ...