acdream 1717(贪心)

题意:

Problem Description

ACdream王国有一条贯穿整个王国的高速公路,一天,你要驾驶着一辆油箱容量为P的车从高速公路的一头驶向另一头,总路程为L千米,每单位体积的汽油可维持行驶W千米,显然路途遥远~总有不够油的情况,所以就要加油~!

再高速公路上总共有N个加油站,但是由于是不同人开的,因此定价也参差不齐。

现在你知道每个加油站的位置,以及每个加油站的单价,问你最少需要多少钱才能到达另一头?

Input

多组数据,每组数据首先是四个整数,P(1<=P<=100),L(1<=L<=30000),W(1<=W<=20),N(1<=N<=500),分别代表油箱容量,路程,每单位体积的路程,加油站数目。

接下来是N行,每行包括一个精确到百分位的实数X(9

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = 505;
const int M = 30005;
double mon[N], d[M];
int n, pos[N], p, l, w;

int main() {
    while (scanf("%d%d%d%d", &p, &l, &w, &n) == 4) {
        for (int i = 0; i < n; i++)
            scanf("%lf%d", &mon[i], &pos[i]);
        for (int i = 0; i <= l; i++)
            d[i] = 0x3f3f3f3f;
        int temp = w * p;
        for (int i = 0; i < n; i++)
            for (int j = 1; j <= temp; j++) {
                if (d[pos[i] + j] > mon[i])
                    d[pos[i] + j] = mon[i];
            }
        int i;
        double res = 0;
        for (i = 1; i <= l; i++) {
            if (fabs(d[i] - 0x3f3f3f3f) < 1e-9)
                break;
            res += d[i];
        }
        if (i == l + 1) {
            printf("YES\n%.2lf\n", res / w);
        }
        else {
            printf("NO\n%.2lf\n", (i - 1) * 1.0);
        }
    }
    return 0;
}
时间: 2024-12-14 11:55:03

acdream 1717(贪心)的相关文章

acdream 1716(贪心)

题意: Problem Description 在ACdream王国中,有一条母亲河,这条母亲河为王国人民提供了各种生活用水.在河边共住着n户人家,每户人家的位置为x[i].由于经济发展需要,ACdream决定在这条母亲河上建立一个水力发电站,经过勘测,这个水力发电站只可以建立在区间[a,b]的某一个地方x0.为了减少大家受到来此发电站的影响,希望min{|x[i]-x0| |0<=i<=n-1}最大,即使得距离发电站最近的人家与发电站的距离最大.若有多组答案,输出坐标较小的即可. Input

acdream 1212(贪心)

题意:有n个人,从1到n,编号越大职位越低,然后给出了第2到第n个人的上司的编号,每个人可以有一堆小弟但只能有一个上司.年底发奖金,每个人可以从上司那得到1000元或发给某个小弟1000元,问所有人能发的奖金和最大是多少,那些人得到了奖金. 题解:直接倒着遍历一遍,把人和他的上司标记掉算作一组,看有几组. #include <stdio.h> #include <string.h> const int N = 500005; int pa[N], n, flag[N]; int m

acdream 1073(贪心)

题意: 战机分为升级和进阶两种. 升级:提升战机的等级,但战机品质不变. 进阶:可将战机提升一个星级(白二星->绿三星->蓝四星->紫五星). 为了简化问题,规定战机进阶规则如下: 白色二星: 起始等级Lv1级,满级Lv25级. Lv1升级到Lv25,总共需要A经验. 进阶到绿色三星条件:满级Lv25后,方可进阶. 绿色三星: 起始等级Lv25级,满级Lv30级. Lv25升级到Lv30,总共需要B经验. 进阶到蓝色四星条件:满级Lv30后,方可进阶. 蓝色四星: 起始等级Lv30级,满

acdream 1224(贪心)

题意:有n个抢劫者抢劫了m块金子,然后第i个人平分xi/y块金子,但是会有除不尽的情况而金子不可再分,那么每个人都有一个不满意度fabs(xi / y - ki/m),ki是每个人实际分得的金子数量,要保证所有人的不满意度和最小,问ki应如何分配. 题解:如果可以除尽,ki就是xi * m / y,否则要把不满意度和再多分一块金子的不满意度的差值存起来,按从大到小排序,把多出来的金子数量num给前num个人多分一块. #include <cstdio> #include <cstring

acdream 1735 输油管道 贪心

输油管道 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1735 Description 平面上有n个油井,现在要建立一条主干线,用来把所有的油井产出的原油都输送出去,主干线是平行于x轴的一条直线,每个油井通过一条支线把原油输送到主干线上,现在给定n个油井在平面上的坐标,那么应该把主干线建在什么地方才能让所有的支干线的总长度最小呢? A的某一段完全重合,或者能够经过上下左右平移与折线A的

ACDream 1734 Can you make a water problem?(贪心)

Can you make a water problem? Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Statistic Next Problem Problem Description Losanto want to make a water problem. But he have no idea….Then he thought a problem: A b

ACdream 1224 Robbers (贪心)

Robbers Special Judge Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Problem Description N robbers have robbed the bank. As the result of their crime they chanced to get M golden coins. Before the robbery the band ha

[ACdream 1212 New Year Bonus Grant]贪心

题意:员工之间形成一棵树,上级可以给下级发奖金,任何一个人最多可以给一个下级发,并且发了奖金后就不能接受奖金.求总共最多可以产生多少的奖金流动 思路:每次选择没有下级并且有上级的员工a,令它的上级为b,那么让b给a发奖金,之后把a和b从树中删掉,这样处理直到不存在这样的员工a.也就是说每次让叶子员工接受奖金.简单证明:对于最优情况,叶子和它的兄弟集合还有它的父亲一定有一个接受了奖金,否则可以选叶子接受从父亲发的奖金,这样比原来增加了1个奖金:假设父亲接受了奖金或者兄弟接受了奖金,那么换成自己接收

ACdream原创群赛(18)のAK&#39;s dream

ACdream原创群赛(18)のAK's dream 题目链接 A:水题,直接模拟题意去搞即可 D:贪心+组合数学,把剑和英雄都从小到大排序,每次计算该英雄能用前几把剑cnt,cnt减去之前有多少人就是该英雄能选的,种数乘上cnt - 之前有多少人 F:DP,dp[i][j][2]表示第i天,用了j次修改,当前状态是A还是B,然后去转移即可 G:水题,直接用字符串处理即可,把数字都加上前导零方便判断 H:几何,利用正弦定理,余弦定理乱搞就可以了 I:水题,直接每个位置推出来输出,化简利用gcd即