HDU - 4791 Alice's Print Service
来源:互联网 发布:网络中两台计算机重名 编辑:程序博客网 时间:2024/05/21 09:59
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4791
题目意思:打印资料,给定N个不同的 si 表示分区间计费,打印处于si 和 si+1 的区间时,收费pi 元 给定 m个询问,让你求出每次打印最省钱的方案。
分析:题目意思不难理解,很容易想到用二分,找出处于哪个区间,然后比较这个值跟后面所有 si 的端点的花费最小的。 不过这样子每次去搜索可能会超时间,所有我们可以预处理一下数据。从后往前 遍历一边,把 si 后的最优条件 存储下来。
比赛的时候,一直过不了这个题目,找不出来哪里错了。就是过不了,想了好多数据验算都没问题。赛后才知道,这个题目不用能lld输出,而要用I64输出
<pre name="code" class="cpp">
#include <stdio.h>#include <iostream>#include <math.h>#include <string.h>#include <stdlib.h>#include <algorithm>#include <bitset>#include <queue>using namespace std;typedef long long ll;ll p[100083],s[100083],n;ll v[100083];int binary(int L,int R,int key){ int ret; while(L<=R) { int mid=(L+R)/2; if(key>=s[mid]) { L=mid+1; ret=mid; <span style="font-family: Arial, Helvetica, sans-serif;">//二分查找出 处于哪两个区间,这里找出的是下界。</span> } else R=mid -1; } return ret;}int main(){ int T; cin>>T; while(T--) { int n, m; cin >>n>>m; for(int i=0;i<n;i++) { scanf("%I64d%I64d",&s[i],&p[i]); } v[n-1]=s[n-1]*p[n-1]; for(int i=n-1;i>=1;i-- ) <span style="font-family: Arial, Helvetica, sans-serif;">//这里是对预处理后面找出最优条件的数组。</span> { v[i-1]=min(v[i],s[i-1]*p[i-1]); } ll g, result, k; for(int i=0;i<m;i++) { scanf("%I64d",&g); k=binary(0,n-1,g); if(k==n-1) result=g*p[n-1]; else { result=min(g*p[k],v[k+1]); } printf("%I64d\n",result); } } return 0;}
0 0
- HDU - 4791 Alice's Print Service
- HDU 4791 Alice's Print Service
- HDU 4791Alice's Print Service
- hdu 4791 Alice's Print Service
- HDU 4791 Alice's Print Service
- HDU 4791 Alice's Print Service(RMQ)
- HDU 4791 Alice’s Print Service
- hdu 4791 Alice's Print Service 二分
- HDU 4791 Alice's Print Service 简单DP
- HDU 4791 Alice's Print Service 【贪心+二分】
- HDU 4791 Alice's Print Service 水二分
- HDU 4791 Alice's Print Service(二分)
- hdu 4791 Alice's Print Service (DP+离线处理)
- zoj 3726& hdu 4791 Alice's Print Service
- HDU 4791 Alice's Print Service 注意一点就好
- hdu 4791 Alice's Print Service(贪心)
- HDU 4791 Alice's Print Service【二分查找】
- hdu 4791 Alice's Print Service(二分)
- 算法二
- centos6.0安装中文输入法
- 微信怎么玩?看看你是不是微信的小白——利川百姓网
- 马士兵hql示例
- C++第十七天 复制控制
- HDU - 4791 Alice's Print Service
- 消息机制 →网络图片查看器
- 迷你播放器--第一阶段(1)--检索媒体音乐并添加到List播放列表
- jquery获得select option的值 和对select option的操作
- 查询表里是否有重复某个字段的数据
- hello,world.
- Java抽象类与接口的区别
- 微信怎么玩?看看你是不是微信的小白——利川百姓网
- 1 pc 2 tomcat servers