HDU 4791 & ZOJ 3726 Alice's Print Service (数学 打表)
题目链接:
HDU:http://acm.hdu.edu.cn/showproblem.php?pid=4791
ZJU:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5072
For example, the price when printing less than 100 pages is 20 cents per page, but when printing not less than 100 pages, you just need to pay only 10 cents per page. It's easy to figure out that if you want to print 99 pages, the best choice is to print an
extra blank page so that the money you need to pay is 100 × 10 cents instead of 99 × 20 cents.
Now given the description of pricing strategy and some queries, your task is to figure out the best ways to complete those queries in order to save money.
Each case contains 3 lines. The first line contains two integers n, m (0 < n, m ≤ 105 ). The second line contains 2n integers s1, p1 , s2, p2 , ..., sn, pn (0=s1 < s2 <
... < sn ≤ 109 , 109 ≥ p1 ≥ p2 ≥ ... ≥ pn ≥ 0).. The price when printing no less than si but less than si+1 pages is pi cents per page (for i=1..n-1). The price
when printing no less than sn pages is pn cents per page. The third line containing m integers q1 .. qm (0 ≤ qi ≤ 109 ) are the queries.
1
2 3
0 20 100 10
0 99 100
0
1000
1000
题意:
打印纸张,随着张数的添加,每张的价格非递增,给出
m 个询问打印的张数,求出最小的花费。
PS:
保留打印a[i]份分别须要的钱,从后往前扫一遍,保证取得最优解。
然后再找到所打印的张数的区间,与没有多打印,仅仅打印m张所需的花费比較!
HDU代码例如以下:
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <iostream>
#define INF 1e18
using namespace std; const int maxn=100017;
typedef __int64 LL; LL s[maxn],p[maxn],c[maxn]; int main()
{
int T;
int n, m;
LL tt;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for(int i = 0; i < n; i++)
{
scanf("%I64d%I64d",&s[i],&p[i]);
} LL minn = INF;
for(int i = n-1; i >= 0; i--)
{
minn = min(s[i]*p[i],minn);
c[i] = minn;
}
for(int i = 0; i < m; i++)
{
scanf("%I64d",&tt);
if(tt>=s[n-1])//最后
printf("%I64d\n",tt*p[n-1]);
else
{
int pos = upper_bound(s,s+n,tt)-s;
LL ans = tt*p[pos-1];
ans = min(ans,c[pos]);
printf("%I64d\n",ans);
}
}
}
return 0;
}
ZJU代码例如以下:
#include <cstdio>
#include <algorithm>
#include <iostream>
#define INF 1e18
using namespace std; const int maxn = 100017;
typedef long long LL; LL s[maxn], p[maxn], c[maxn]; int main()
{
int T;
int n, m;
LL tt;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for(int i = 0; i < n; i++)
{
scanf("%lld%lld",&s[i],&p[i]);
} LL minn = INF;
for(int i = n-1; i >= 0; i--)
{
minn = min(s[i]*p[i],minn);
c[i] = minn;
}
for(int i = 0; i < m; i++)
{
scanf("%lld",&tt);
if(tt>=s[n-1])//最后
printf("%lld\n",tt*p[n-1]);
else
{
int pos = upper_bound(s,s+n,tt)-s;
LL ans = tt*p[pos-1];
ans = min(ans,c[pos]);
printf("%lld\n",ans);
}
}
}
return 0;
}
HDU 4791 & ZOJ 3726 Alice's Print Service (数学 打表)的更多相关文章
- HDU 4791 Alice's Print Service 水二分
点击打开链接 Alice's Print Service Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- HDU 4430 & ZOJ 3665 Yukari's Birthday(二分法+枚举)
主题链接: HDU:pid=4430" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=4430 ...
- HDU 4791 Alice's Print Service 思路,dp 难度:2
A - Alice's Print Service Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & ...
- HDU 4791 Alice's Print Service (2013长沙现场赛,二分)
Alice's Print Service Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- 2013 ACM/ICPC 长沙现场赛 A题 - Alice's Print Service (ZOJ 3726)
Alice's Print Service Time Limit: 2 Seconds Memory Limit: 65536 KB Alice is providing print ser ...
- A - Alice's Print Service ZOJ - 3726 (二分)
Alice is providing print service, while the pricing doesn't seem to be reasonable, so people using h ...
- Alice's Print Service
Alice's Print Service Time Limit: 2 Seconds Memory Limit: 65536 KB Alice is providing print ser ...
- UVAlive 6611 Alice's Print Service 二分
Alice is providing print service, while the pricing doesn't seem to be reasonable, so people using h ...
- HDU 4791 Alice's Print Service(2013长沙区域赛现场赛A题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4791 解题报告:打印店提供打印纸张服务,需要收取费用,输入格式是s1 p1 s2 p2 s3 p3.. ...
随机推荐
- cocospods 卡在 Analyzing dependencies
參考链接:http://www.cocoachina.com/bbs/read.php? tid=193398 关于pod stetup的详解在这里.对于初次使用CocoaPods的同学,即使你不使用 ...
- VS2015 C#6.0
VS2015 C#6.0 中的那些新特性 VS2015在自己机器上确实是装好了,(全部安装的话,在Java SE 开发工具包 会卡顿很长时间,我直接关闭,然后重启电脑,重新修复安装搞定), 想来体验一 ...
- 怎么将Emeditor设置成网页查看源代码的默认编译器
1.打开emditor: 2.在菜单栏中找到工具---->自定义,打开自定义窗口: 3.快捷方式--->更多快捷方式 5.选中“在internet explorer中通过emeditor查 ...
- Windows 8 键盘上推自定义处理
原文:Windows 8 键盘上推自定义处理 在Windows 8 应用程序中,当TextBox控件获得焦点时,输入面板会弹出,如果TextBox控件处于页面下半部分,则系统会将页面上推是的TextB ...
- 百度云BAE3.0 的ssh构造(本机ssh项目迁移到BAE3.0)
依据百度云的java部署文档进行部署 http://developer.baidu.com/wiki/index.php?title=docs/cplat/bae/java 做例如以下改动,然后把项目 ...
- mfc配置GDI+有106个错误
mfc配置GDI+有106个错误,处理如下,参考http://bbs.csdn.net/topics/380054079 一开始#include...放在stdafx.h里有错误,后来上面修改好了,放 ...
- Cordova WP8 插件开发
原文:Cordova WP8 插件开发 前面博客中介绍了Cordova WP8平台上的安装部署,Cordova扩展可以利用WP8本地代码扩展WebApp的功能,调用本地能力需要开发相应的插件,下面以闪 ...
- Android CTS測试Fail项改动总结(四)
Android5.1上的測试 1.android.security.cts.SELinuxDomainTest# testInitDomain fail 打印的log junit.framework. ...
- Centos 6.5下一个SNMP简单配置(snmp protocol v3,监控宝)
Centos 6.5下一个SNMP简单配置(snmp protocol v3.监控宝) jom_ch@2014/7/25 1,安装 >yum -y install net-snmp net-sn ...
- 如何成功实施SDL提供的官方Android平台Demo
如何成功实施SDL提供的官方Android平台Demo 作者:雨水 日期:2014-4-30 编写说明:SDL的官方提供了一个Anroid的demo模板SDLActivity,无法直接执行,依照官方 ...