传送门

题意: 在一个一维坐标上,有 n 个东西, 每个东西, 用 xi, si 表示 这个东西在 xi 位置上,

   它能覆盖到的区间为 [ xi - si, xi + si ];

   然后, 你可以对任意的东西,  扩大它的 覆盖区间, 即对 si 加 1; 花费1;

   问你 覆盖 [ 1, m ] 的最少花费。

   n <= 80, m <= 100000;

解: 显然 DP;

   我们用 dp[ i ] 表示 覆盖 i ~ m 的最少花费。

   然后我们从 m ~ 1 枚举 x;

  若这个x 被某个东西覆盖, 则 dp[ i ] = dp[ i + 1 ];

  否则, 枚举 所有的 n 个东西, 判断 那些 xi - si 大于你当前枚举的那个 x 的东西。

  那么你设 dis = xi - si - x; 即你到那个东西覆盖的区间的左端点的距离。

  然后, 因为它左边扩了 dis, 那么它右边也可以扩 dis;

  那么,答案就是 dis + dp[ xi + si + dis];

  然后, 最后 dp[ 1 ] 就是答案了。

  

#include <bits/stdc++.h>
#define LL long long
#define INF 0x3f3f3f3f
using namespace std;
struct note {
int l, r;
}a[];
bool cmp(note a, note b) {
return a.l == b.l ? a.r < b.r : a.l < b.l;
}
const int N = 2e5 + ;
int dp[N];
int main() { int n, m; scanf("%d %d", &n, &m);
for(int i = ; i <= m; i++) dp[i] = INF;
int ma = ;
for(int i = ; i <= n; i++) {
int x, s; scanf("%d %d", &x, &s);
a[i].l = max(x - s, ); a[i].r = min(x + s, m);
ma = max(ma, a[i].r);
for(int j = a[i].l; j <= a[i].r; j++) {
dp[j] = ;
}
}
for(int i = m; i > ma; i--) dp[i] = m - i + ;
// n++; a[n].l = n; a[n].r = n;
sort(a + , a + + n, cmp);
dp[m + ] = ;
for(int i = m; i >= ; i--) {
if(dp[i] == ) dp[i] = dp[i + ];
else {
for(int j = ; j <= n; j++) {
if(a[j].l > i) {
int dis = a[j].l - i;
int R = min(a[j].r + dis, m);
dp[i] = min(dp[i], dis + dp[R + ]);
}
}
}
}
printf("%d\n", dp[]);
}

E. Antenna Coverage (dp)的更多相关文章

  1. CF1253E Antenna Coverage(DP)

    本题难点在正确性证明. 令 \(f_i\) 表示 \([1,i]\) 被全部覆盖的最小花费.答案为 \(f_m\). 首先发现,添加一个区间 \([0,0]\) 不会影响答案.所以 \(f_i\) 的 ...

  2. LightOJ 1033 Generating Palindromes(dp)

    LightOJ 1033  Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...

  3. lightOJ 1047 Neighbor House (DP)

    lightOJ 1047   Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...

  4. UVA11125 - Arrange Some Marbles(dp)

    UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...

  5. 【POJ 3071】 Football(DP)

    [POJ 3071] Football(DP) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4350   Accepted ...

  6. 初探动态规划(DP)

    学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...

  7. Python项目在Jenkins中的自动化测试实践(语法检查、单元测试,coverage(代码覆盖率)、自动打包)

    原始链接:http://blog.csdn.net/a464057216/article/details/52934077 requirments OS: Ubuntu 14.04+ Gitlab 8 ...

  8. Tour(dp)

    Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...

  9. 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)

    .navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...

随机推荐

  1. MyEclipse部署外部引用的jar到web-inf的lib目录下

    在用MyEclipse开发java web项目的时候,引入了外部jar,都是以library的形式存在左边的explore中的,调试没有问题,但是部署之后呢,经常遇到个非常头疼的问题就是,这些jar不 ...

  2. 安装和启动docker

    1.安装和启动docker yum update -y yum install -y yum-utils yum-config-manager --add-repo https://download. ...

  3. DotnetSpider爬虫简单示例 net core

    文章地址 https://blog.csdn.net/sD7O95O/article/details/78097556 安装爬虫框架  NUGET 安装DotnetSpider 创建HTTP协议数据包 ...

  4. 3、Vue实例的属性

    1.获取Vue实例的属性 2.data属性 每个Vue实例都会代理其data对象里所有的属性.如果实例创建之后添加或者更改属性,他不会触发视图更新. 这句话说了下面两件事情 1.每个Vue实例都会代理 ...

  5. wangeditor视频

    wangeditor网址http://www.wangeditor.com/ 目前使用的是3.11版本 使用步骤 1.引用wangEditor.min.js 2.代码 2.1 取得函数var E = ...

  6. 如何在pycharm中设置环境变量

    今天运行tensorflow的时候,发现在pycharm下,程序无法找到CUDA的libcupti.so文件.而在添加完环境变量: export LD_LIBRARY_PATH=$LD_LIBRARY ...

  7. Java自学-日期 日期格式化

    Java中使用SimpleDateFormat 进行日期格式化类 SimpleDateFormat 日期格式化类 示例 1 : 日期转字符串 y 代表年 M 代表月 d 代表日 H 代表24进制的小时 ...

  8. 从零开始react实战:云书签(总览)

    一个合格的全栈开发怎么能不会 react 呢?所以从现在开始系统的学习 react 开发.目标:完成完成一个云书签,包含前后台. 基于create-react-app进行开发,选择这个框架有以下两个原 ...

  9. consul:健康检查

    官方文档:https://www.consul.io/docs/agent/checks.html consul提供的健康检查有以下几种: 1.script+interval 2.http+inter ...

  10. MongoDB配置文件及添加用户

    一.参数启动mongodb $ mongod --bind_ip=0.0.0.0 二.配置文件: mongod.conf # 后台运行 fork=true # 数据存储文件目录 dbpath=/roo ...