zoukankan      html  css  js  c++  java
  • Codeforces Round #486 (Div. 3) F. Rain and Umbrellas

    Codeforces Round #486 (Div. 3) F. Rain and Umbrellas

    题目连接:

    http://codeforces.com/group/T0ITBvoeEx/contest/988/problem/E

    Description

    Polycarp lives on a coordinate line at the point x=0. He goes to his friend that lives at the point x=a. Polycarp can move only from left to right, he can pass one unit of length each second.

    Now it's raining, so some segments of his way are in the rain. Formally, it's raining on n non-intersecting segments, the
    i-th segment which is in the rain is represented as [li,ri] (0≤li<ri≤a).

    There are m umbrellas lying on the line, the i-th umbrella is located at point xi (0≤xi≤a) and has weight pi. When Polycarp begins his journey, he doesn't have any umbrellas.

    During his journey from x=0 to x=a Polycarp can pick up and throw away umbrellas. Polycarp picks up and throws down any umbrella instantly. He can carry any number of umbrellas at any moment of time. Because Polycarp doesn't want to get wet, he must carry at least one umbrella while he moves from x to x+1 if a segment [x,
    x+1] is in the rain (i.e. if there exists some i such that li≤x and x+1≤ri).

    The condition above is the only requirement. For example, it is possible to go without any umbrellas to a point where some rain segment starts, pick up an umbrella at this point and move along with an umbrella. Polycarp can swap umbrellas while he is in the rain.

    Each unit of length passed increases Polycarp's fatigue by the sum of the weights of umbrellas he carries while moving.

    Can Polycarp make his way from point x=0 to point x=a? If yes, find the minimum total fatigue after reaching x=a, if Polycarp picks up and throws away umbrellas optimally.

    Sample Input

    10 2 4
    3 7
    8 10
    0 10
    3 4
    8 1
    1 2
    
    

    Sample Output

    14
    
    

    题意

    有几段下雨的地方,有几把雨伞在地上,消耗的值为伞的重量*移动距离,问在不被淋湿的情况下,如何打伞消耗最小

    题解:

    dp[i]指的是从第i把伞开始打之后的最小消耗,他由dp[j] (j>i)转移而来。
    时间复杂度O(m^2)

    代码

    #include <bits/stdc++.h>
    
    using namespace std;
    
    pair<int, int> r[2010];
    pair<int, int> u[2010];
    int n, m, a;
    int h[2010];
    int ans;
    const int INF = 0x7fffffff;
    int st, fn;
    
    int main() {
        //freopen("1.txt","r",stdin);
    
        cin >> a;
        cin >> n >> m;
        st = INF;
        fn = 0;
        for (int i = 0; i < n; i++) {
            cin >> r[i].first >> r[i].second;
            st = min(st, r[i].first);
            fn = max(fn, r[i].second);
        }
        for (int i = 0; i < m; i++) cin >> u[i].first >> u[i].second;
        sort(u, u + m, [](const pair<int, int> &p, const pair<int, int> &q) { return p < q; });
        for (int i = 0; i <= m; i++) {
            h[i] = INF;
        }
        sort(r, r + n, [](const pair<int, int> &p, const pair<int, int> &q) { return p < q; });
        for (int i = m - 1; i >= 0; i--) {
            int index;
            for (index = n - 1; index >= 0; index--)
                if (r[index].first < u[i].first) break;
            int cur = (fn > u[i].first ? fn - u[i].first : 0) * u[i].second;
            h[i] = min(h[i], cur);
    
            for (int j = 0; j < i; j++) {
                int cur;
                if (r[index].second > u[j].first) {
                    cur = (min(r[index].second, u[i].first) - u[j].first) * u[j].second;
                } else {
                    cur = 0;
                }
                h[j] = min(h[j], h[i] + cur);
            }
        }
    
        ans = INF;
        for (int i = 0; i < m; i++) {
            if (u[i].first <= st) ans = min(ans, h[i]);
        }
        if (ans == INF) ans = -1;
        cout << ans << endl;
    }
    
  • 相关阅读:
    剑指Offer
    剑指Offer
    ASP.NET MVC4中的bundles特性引发服务器拒绝访问(403错误)
    less文件的样式无法生效的一个原因,通过WEB浏览器访问服务器less文件地址返回404错误
    Sqlserver Sql Agent Job 只能同时有一个实例运行
    SSAS 聚合设计提升CUBE的查询性能(转载)
    SQL SERVER: 合并相关操作(Union,Except,Intersect)
    SQL Server安装完成后3个需要立即修改的配置选项(转载)
    收缩TempDB的办法(转载)
    SSIS 关于并发的两个设置
  • 原文地址:https://www.cnblogs.com/EDGsheryl/p/9153687.html
Copyright © 2011-2022 走看看