题目背景

紫女,韩国歌舞坊(实为刺客组织)紫兰轩之主,千娇百媚,美艳无方。武艺高强且极有谋略胆识,精通奇石药物,冶炼之术及制毒用毒之术独步天下,真实姓名与来历无人知晓,只因总是身着一袭紫衣,所以众人以“紫女”称之。与公子韩非共同创建了“流沙”组织。

题目描述

为了能够获取更多的韩国内部消息,紫女决定收购一批极为罕见的稀世珍宝在紫兰轩进行拍卖,以吸引更多的大人物前来紫兰轩。她准备在m天内购买一些宝物来充实库存。现在,市场上有n种物品,第i种物品的价格为vi,紫女每天最多只能购买xi个。第i天紫女得到wi的钱,她会选择不停购买能买得起的最贵的物品。她想在尽量短的时间内做出决断,所以她需要提前求出每天会购买多少个物品。

由于持有现金非常的危险,每一天买完东西后如果还剩下钱,这些钱就会被丢弃。

输入输出格式

输入格式:

第一行两个整数n,m。接下来n行每行两个整数vi,xi。接下来m行每行一个整数wi。

输出格式:

m行每行一个整数,第i行表示第i天购买的物品数量。

输入输出样例

输入样例#1:

3 3
1 1
2 2
3 3
5
10
15
输出样例#1:

2
4
6

说明

对于20%的数据,n,m<=1000。

对于另外40%的数据,xi=1。

对于100%的数据,n,m<=100000,1<=vi<=10^9,1<=xi<=10000,0<=wi<=10^18。

分析:主要的思想还是二分吧.

每次要找到<=w的最大的价格,我们可以先对原序列按照价格排个序,然后二分来找.找到以后我们看从这个物品往前买能买到哪,买多少个,这里可以用前缀和+二分解决,如果当前商品买不完就计算一下能买多少个.每次下来w都会减小,我们就不断地缩小右边界不停地二分就可以了.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; typedef long long ll; struct node
{
ll v, x;
}e[]; ll n, m;
ll sum[], w, sum2[],ans;
bool flag = false; bool cmp(node a, node b)
{
return a.v < b.v;
} int erfen(ll maxn)
{
ll pos = , pos2 = ;
ll l = , r = maxn;
while (l <= r)
{
ll mid = (l + r) >> ;
if (e[mid].v <= w)
{
pos = mid;
l = mid + ;
}
else
r = mid - ;
}
if (!pos)
{
flag = ;
return ;
}
l = , r = pos;
pos2 = pos;
while (l <= r)
{
ll mid = (l + r) >> ;
if (sum[pos] - sum[mid] <= w)
{
pos2 = mid;
r = mid - ;
}
else
l = mid + ;
}
w -= sum[pos] - sum[pos2];
ans += sum2[pos] - sum2[pos2];
ll use = e[pos2].x; while (w >= e[pos2].v && use)
{
use--;
w -= e[pos2].v;
ans++;
}
if (use == )
return pos2 - ;
else
return pos2;
} int main()
{
scanf("%lld%lld", &n, &m);
for (int i = ; i <= n; i++)
scanf("%lld%lld", &e[i].v, &e[i].x);
sort(e + , e + n + , cmp);
for (int i = ; i <= n; i++)
{
sum[i] = sum[i - ] + e[i].v * e[i].x;
sum2[i] = sum2[i - ] + e[i].x;
}
while (m--)
{
flag = ;
scanf("%lld", &w);
ans = ;
int t = erfen(n);
while (!flag && w >= e[].v && t > )
t = erfen(t);
printf("%lld\n", ans);
} return ;
}

noip模拟赛 fateice-shop的更多相关文章

  1. 10.16 NOIP模拟赛

    目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...

  2. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  3. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  4. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  5. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  6. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  7. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  8. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  9. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  10. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

随机推荐

  1. Robert 的军队

    题目描述 Winter is coming. Robert 是个昏庸的君主,整日沉迷于吃喝玩乐,终于,当寒冬降临,他不得不组 织军队来对抗敌人. 尽管如此,他仍然是个喜欢玩耍的人,还有点强迫症,他希望 ...

  2. localStorage 读&&写

    localStorage.setItem('edit',nowedit);  写 var nowedit1= localStorage.getItem('editdel');读

  3. E20170623-hm

    verbose  adj. 冗长的,啰唆的,累赘的; reverse   vt. (使) 反转; (使) 颠倒; 掉换,交换; [法] 撤消,推翻;                adj. 反面的; ...

  4. oracle数据库简单操作

    导入某用户所有表和数据:imp sgp/sgp@192.168.0.99:1521/orcl file=sgp20161025.dmp full=y 导出指定表及数据:exp sgp/sgp@192. ...

  5. $stylus美化$

    一直在用洛谷 当然不一定是洛谷 其他的网站也可以用 比如说codeforces 还是决定要美化一波 首先去找一个插件 叫做 stylus stylus下载的很多 我不想过多说明. Google和QQ浏 ...

  6. 【NOIP2016】DAY1 T2 天天爱跑步

    [NOIP2016]DAY1 T2 天天爱跑步 Description 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.?天天爱跑步?是一个养成类游戏,需要玩家每天按时 ...

  7. IIS 503 错误

    今天早上乘公交的时候,网站运维群里直接炸了,网站打不开,503错误.然后就各种@我,吓得我手机都要扔了,然后马不停蹄的赶往公司去查看错误. 我首先在IIS上浏览网页,想试图在服务器上显现出详细错误,这 ...

  8. SVN异常处理(五)-状态小图标不见了

    1.发现问题 装了Win10,再装了Office2016等一些最新软件后,发现SVN状态小图标竟然就不见了 2.分析问题 在Window系统中,当UAC启动时,有些应用程序的图标上会显示一个盾牌,像这 ...

  9. Scala-基础-变量与常量

    import junit.framework.TestCase import org.junit.Test //变量 //var 代表变量 //val 代表常量 //关键字 class,extends ...

  10. [hihocoder][Offer收割]编程练习赛58

    最大的K-偏差排列 每次取可选范围里的最大的数字,如果最左侧的数字还没有使用就直接使用最左侧的数字 #pragma comment(linker, "/STACK:102400000,102 ...