• Codeforces Round #600 (Div. 2) E .Antenna Coverage


    #include<iostream>
    #include<stdio.h>
    using namespace std;
    typedef long long ll;
    const int N=1e5+10;
    int dp[N];
    int x[85],r[85];
    int main() {
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1; i<=n; ++i) {
            scanf("%d%d",x+i,r+i);
        }
        dp[m+1]=0;
        for(int i=m; i>=1; --i) {
            int pos=i;
            dp[i]=1+dp[i+1];//从右往左
            for(int j=1; j<=n; ++j) {
                int _x=x[j],_r=r[j];
                if(_x>=pos) {//如果在某个天线的左边
                    if(_x-_r<=pos) {//如果在天线的覆盖范围之内
                        dp[i]=min(dp[i],dp[min(m+1,_x+_r+1)]);//就不用花费,往前面倒腾,而且不能出界
                    } else {//如果不在覆盖范围之内
                        dp[i]=min(dp[i],_x-_r-pos+dp[min(m+1,2*_x-pos+1)]);//扩展距离的费用 +   原本需要花费的钱
                                                            //_x-(pos-x) 也是往前倒腾       因为往左扩展的同时也会往右扩展
                                                            //而此时左边还没有赋值,就往前
                    }
                } else {//如果在某个天线的右边
                    if(_x+_r>=pos) {//如果在范围之内
                        dp[i]=min(dp[i],dp[min(m+1,_x+_r+1)]);//同理,往前搞
                    }
                    //在右边的情况不用讨论,因为它一定会在某个天线的右边
                    //当位于最右边且且覆盖不的时候,第19行已经进行了处理
                }
            }
        }
        printf("%d
    ",dp[1]);
    }
    /*
    dp[m+1]=0,我们接下来从大到小遍历pos pospos,来求出dp[] dp[]dp[],假设现在要求dp[pos] dp[pos]dp[pos],那么我们枚举所有的电线杆
    dp[pos]=1+dp[pos+1] dp[pos]=1+dp[pos+1]dp[pos]=1+dp[pos+1],代表从x-1位置扩展到x
    当Xi>=pos,且Xi-ri<=pos,则dp[pos]=min(dp[pos],dp[min(xi+ri+1,m+1)])  要判段是否出界
    当Xi>=pos,且Xi-ri>pos ,dp[pos]=min(dp[pos],xi-ri-pos+dp[min(2*xi-pos+1,m+1)])
    当xi<pos,且xi+ri>=pos,则dp[pos]=min(dp[pos],dp[min(xi+ri+1,m+1)])
    当xi<pos,且xi+ri<pos,则不用当前 antenna扩展
    */
  • 相关阅读:
    http协议
    db2 将逗号分隔数据转换为多值IN列表
    jquery deferred
    ps -ef|grep htpd|wd -l
    mysql 触发器
    css 五角星 (转)
    java 问题
    浏览器假死
    js math atan2
    CSS伪类选择器
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11930388.html
Copyright © 2020-2023  润新知