解题思路:动态规划

  1. 遍历点i,如果从前一个点i-1走到这个点i不需要伞,则疲劳值不变dp[i] = dp[i-1]。
  2. 如果前一个点i-1走到这一个点i需要伞,则从前面找一把伞。
  3. 即遍历前面的每个点j,如果点j处有伞,dp[i] = min(dp[i], dp[j]+(i-j)*fig[j])。fig[j]意为第j个点出伞所需要的疲劳值。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll; bool seg[2010]; //seg[i]=true表示从i-1走到i需要伞
int umb[2010]; //umb[i]如果不为INT_MAX表示第i个位置有伞,且umb[i]是这个点所有伞疲劳值的最小值
int dp[2010]; //dp[i]表示走到第i个点最少需要的疲劳值 int main(){
ios::sync_with_stdio(false);
int a,n,m;
cin >> a >> n >> m;
int k1,k2;
//将seg[k1+1,k2]填充为true,边界考虑清楚,注意seg后面的注释
for(int i = 1;i <= n; ++i) cin >> k1 >> k2, fill(seg+k1+1,seg+k2+1,true);
//umb表示伞
fill(umb, umb+2010, INT_MAX);
for(int i = 1;i <= m; ++i) cin >> k1 >> k2, umb[k1] = min(umb[k1],k2);
fill(dp+1, dp+2010, INT_MAX/2);
for(int i = 1;i <= a; ++i){
//如果从i-1走到i需要伞,则从前面找一把伞
if(seg[i]){
for(int j = i-1;j >= 0; --j)
if(umb[j] != INT_MAX)
dp[i] = min(dp[i], dp[j]+(i-j)*umb[j]);
}else //不需要伞,疲劳值不变
dp[i] = dp[i-1];
}
if(dp[a] == INT_MAX/2) dp[a] = -1;
cout << dp[a] << endl;
return 0;
}

Codeforces 988F. Rain and Umbrellas的更多相关文章

  1. Codeforces 988F Rain and Umbrellas(DP)

    题目链接:http://codeforces.com/contest/988/problem/F 题目大意: 有三个整数a,n,m,a是终点坐标,给出n个范围(l,r)表示这块区域下雨,m把伞(p,w ...

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

    Codeforces Round #486 (Div. 3) F. Rain and Umbrellas 题目连接: http://codeforces.com/group/T0ITBvoeEx/co ...

  3. CodeForces 988 F Rain and Umbrellas

    Rain and Umbrellas 题意:某同学从x=0的点走到x=a的点,路上有几段路程是下雨的, 如果他需要经过这几段下雨的路程, 需要手上有伞, 每一把伞有一个重量, 求走到重点重量×路程的最 ...

  4. Codeforces Round #486-F.Rain and Umbrellas题解

    一.题目链接:http://codeforces.com/contest/988/problem/F 二.题面 三.思路 很明显而且比较能想到的$dp$. 四.代码实现 #include<bit ...

  5. Rain and Umbrellas(dp)

    题目链接 http://codeforces.com/problemset/problem/988/F 令dp[i][j]为走到目标为i处,手里拿着第j把伞,同时注意,在某处可能存在不止一把伞 #in ...

  6. CodeForces 1419F Rain of Fire

    题意 不想写. 题解 场上想了 1h+ 无果,一到场外就口胡出来了,我真是个 sb. 首先注意到如果 \(t\) 满足条件那么 \(t+1\) 也会满足,所以答案具有单调性,可以二分,于是现在只需要考 ...

  7. 【赛时总结】◇赛时·V◇ Codeforces Round #486 Div3

    ◇赛时·V◇ Codeforces Round #486 Div3 又是一场历史悠久的比赛,老师拉着我回来考古了……为了不抢了后面一些同学的排名,我没有做A题 ◆ 题目&解析 [B题]Subs ...

  8. DP 题集 1

    关于 DP 的一些题目 参考资料 [Tutorial] Non-trivial DP Tricks and Techniques DP Rain and Umbrellas Mr. Kitayuta, ...

  9. CodeForces 667A Pouring Rain

    A. Pouring Rain time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

随机推荐

  1. flask-alembic数据迁移工具

    alembic是用来做ORM模型与数据库的迁移与映射.alembic使用方式跟git有点类似,表现在两个方面, 第一,alemibi的所有命令都是以alembic开头: 第二,alembic的迁移文件 ...

  2. Spark RDD概念学习系列之如何创建Pair RDD

    不多说,直接上干货! 创建Pair RDD Python语言 pairs = lines.map(lambda x: (x.split(], x))  scala语言 val pairs = line ...

  3. “双十二”年终盛典,Guitar Pro邀您一起倾情共舞

    躲过了双十一,躲不过双十二,隐约昨天还是双十一,马上双十二又叕来了,弱弱的问一句“你们的手长粗了来了吗?”在这即将结束的年终盛典里,各商家又将如“双十一”般纷纷使出浑身解数,作为吉他最佳拍档的编曲软件 ...

  4. Kattis - Virtual Friends(并查集)

    Virtual Friends These days, you can do all sorts of things online. For example, you can use various ...

  5. jmeter+ant+jenkins持续集成

    邮件.报告插件和jenkins的war包下载地址:链接:https://pan.baidu.com/s/1gZJ53x50bxVyEsQFjdCkog 密码:1jtz 1.下载ant  网盘地址:链接 ...

  6. wordpress 拾遗

    wordpress 拾遗 运行环境 php mySQL Apache 集成开发环境 Appserv xampp phpstudy 文章和页面的区别 文章是发布网站主要内容的地方,比如博客的文章,商城的 ...

  7. BZOJ 1030 [JSOI2007]文本生成器 (Trie图+DP)

    题目大意:给你一堆字符串,一个串不合法的条件是这些字符串中任意一个是这个串的子串,求合法的串的数量 其实这道题比 [HNOI2008]GT考试 那道题好写一些,但道理是一样的 只不过这道题的答案可以转 ...

  8. ubuntu 12.04下安装Qt出现cannot execute binary file的解决方案

    最近在ubuntu 12.04下安装QT的过程中,遇到一个问题. ./qt-opensource-linux-x64-5.7.0.run出现了bash: ./qt-opensource-linux-x ...

  9. 小学生都能学会的python(列表[ ])

    小学生都能学会的python(列表[ ]) 1. 什么是列表(list) 能装东西的东西 列表中装的数据是没有限制的, 大小基本上是够用的 列表使用[]来表示. 在列表中每个元素与元素之间用逗号隔开 ...

  10. 12:打印 1 到最大的 n 位数

    题目:输入数字 n.按顺序打印出从 1 到 最大的 n 位十进制数.比方输入 3 ,则打印出 1.2 .3 一直到最大的3位数即 999. 解析: easy知道不能用 int 等数字类型表示(大数问题 ...