Codeforces 607A Chain Reaction【dp】

探讨了在一个数轴上放置和激活灯塔的问题,目标是最小化因新增灯塔而被摧毁的原有灯塔数量。

A. Chain Reaction
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

There are n beacons located at distinct positions on a number line. The i-th beacon has position ai and power level bi. When the i-th beacon is activated, it destroys all beacons to its left (direction of decreasing coordinates) within distance bi inclusive. The beacon itself is not destroyed however. Saitama will activate the beacons one at a time from right to left. If a beacon is destroyed, it cannot be activated.

Saitama wants Genos to add a beacon strictly to the right of all the existing beacons, with any position and any power level, such that the least possible number of beacons are destroyed. Note that Genos's placement of the beacon means it will be the first beacon activated. Help Genos by finding the minimum number of beacons that could be destroyed.

Input

The first line of input contains a single integer n (1 ≤ n ≤ 100 000) — the initial number of beacons.

The i-th of next n lines contains two integers ai and bi (0 ≤ ai ≤ 1 000 000, 1 ≤ bi ≤ 1 000 000) — the position and power level of the i-th beacon respectively. No two beacons will have the same position, so ai ≠ aj if i ≠ j.

Output

Print a single integer — the minimum number of beacons that could be destroyed if exactly one beacon is added.

Examples
Input
4
1 9
3 1
6 1
7 4
Output
1
Input
7
1 1
2 1
3 1
4 1
5 1
6 1
7 1
Output
3
Note

For the first sample case, the minimum number of beacons destroyed is 1. One way to achieve this is to place a beacon at position 9 with power level 2.

For the second sample case, the minimum number of beacons destroyed is 3. One way to achieve this is to place a beacon at position 1337 with power level 42.


题目大意:

给你N个灯塔,接下来N行,每行两个元素,表示灯塔的位子和能量范围。当一个灯塔建立的时候,其左边能量范围内的灯塔,将被摧毁,如果此灯塔没有建立的时候,其没有作用,此时我们可以在最初的时候,所有灯塔的最右边建立一个灯塔,位子和能量范围是任意设定的。问最少有多少灯塔被摧毁。


思路:


1、考虑dp,如果我们考虑dp最少摧毁的数量,显然比较困难,考虑逆向思维,我们设定dp【i】表示从0-i位子中最多建立的灯塔数,那么其区间【0-i】最少摧毁的灯塔数即已知。


2、考虑其状态转移方程(其中a【i】=x表示位子i上灯塔的作用范围为x):

①如果此灯塔是第一个灯塔,那么dp【i】=1,表示这个灯塔左侧没有灯塔能被其摧毁。

②如果此灯塔的作用范围能够覆盖到第一个灯塔,那么dp【i】=1,表示如果建立此灯塔,那么其左侧全部灯塔都被摧毁了,那么区间【0-i】内,只能建立当前一个灯塔。

③如果以上两条都不符合,那么dp【i】=1+dp【i-a【i】-1】表示,当前灯塔建立(1),并且累加上其作用范围以外的区间【0,i-a【i】-1】最多的灯塔数(dp【i-a【i】-1】)。

④如果当前位子i没有灯塔,那么dp【i】=dp【i-1】。


3、初始建立一个灯塔在所有灯塔的最右侧其位子和作用范围任意,其实就是在说,建立完这个灯塔之后,其最右端的一些灯塔就被摧毁了,那么我们最多建立的灯塔数,就是相当于,在从【0,i】取一个最大值(0<=i<=1000000),那么最小摧毁数=n-最大建立数。


Ac代码:

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int a[1000040];
int dp[1000040];
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        for(int i=0;i<n;i++)
        {
            int pos,r;
            scanf("%d%d",&pos,&r);
            a[pos]=r;
        }
        int f=0,posf;
        for(int i=0;i<=1000000;i++)
        {
            if(a[i]==0)dp[i]=dp[i-1];
            else
            {
                if(f==0)dp[i]=1,f++,posf=i;
                else if(i-posf<=a[i])dp[i]=1;
                else dp[i]=dp[i-a[i]-1]+1;
            }
        }
        int output=0;
        for(int i=0;i<=1000000;i++)
        {
            output=max(output,dp[i]);
        }
        printf("%d\n",n-output);
    }
}



代码转载自:https://pan.quark.cn/s/8ce4326d996e 对于在 CentOS 7 系统中修改网卡配置文件后无法使设置生效的情况,经过实践验证,可以通过使用 nmcli 命令来进行调整。完成修改之后,需要重新启动虚拟机以使更改生效,这样操作流程即告完成。如果设置仍然无法生效,则表明虚拟机在启动过程中所获取的 IP 地址配置并非针对 eth0,此时可以对其它网卡的配置文件进行修改或将其移除。在 CentOS 7 系统中,网络配置的管理机制与早期版本存在差异,主要体现为采用了 Network Manager 服务来负责网络接口的管理。在某些情形下,尽管修改了 `/etc/sysconfig/network-scripts` 目录下的 `ifcfg-eth0` 文件,但网络配置却未能即时生效。此类问题的发生通常源于 CentOS 7 采用了不同于以往的配置读取方法。接下来将具体阐述如何借助 nmcli 命令来处理这一挑战。 以 root 用户身份登录系统并打开终端界面。nmcli 是 Network Manager 提供的命令行界面工具,它支持在命令行环境下执行网络连接的建立、编辑、查询及管理任务。针对修改 eth0 网卡配置的需求,可以遵循以下步骤进行操作: 1. 导航至 `/etc/sysconfig/network-scripts` 目录: ``` cd /etc/sysconfig/network-scripts ``` 2. 检查该目录内是否存在 `ifcfg-eth0.bak` 文件,该备份文件可能是先前调整配置时遗留下来的,若存在可能造成冲突。若发现该文件,可以选择将其删除: ``` [root@localhost netw...
代码转载自:https://pan.quark.cn/s/46fd08fb879c 网管教程 从入门到精通软件篇 ★一。★详尽的xp修复控制台指令及其应用!!! 放入xp(2000)的光盘,安装时选择R,执行修复! Windows XP(涵盖 Windows 2000)的控制台指令是在系统遭遇某些意外状况时的一种极具效用的诊断、检测以及恢复系统功能的工具。笔者确实一直期望能够将这方面的指令进行归纳,此次由老范辛苦整理了这份极具价值的秘籍。 Bootcfg bootcfg 命令用于启动配置与故障恢复(对大多数计算机而言,即 boot.ini 文件)。 带有特定参数的 bootcfg 命令仅在运用故障恢复控制台时方可使用。能够在命令行界面下运用带有不同参数的 bootcfg 命令。 用法: bootcfg /default 设定默认引导选项。 bootcfg /add 向引导清单中增添 Windows 安装。 bootcfg /rebuild 重复整个 Windows 安装流程并让用户选择需添加的项目。 注意:运用 bootcfg /rebuild 之前,应先借助 bootcfg /copy 命令备份 boot.ini 文件。 bootcfg /scan 探查用于 Windows 安装的全部磁盘并展示结果。 注意:这些结果被静态存储,并用于当前会话。若在当前会话期间磁盘配置发生变动,为获取更新的探查结果,必须先重启计算机,然后再次探查磁盘。 bootcfg /list 列示引导清单中已有的项目。 bootcfg /disableredirect 在启动引导程序中禁用重定向。 bootcfg /redirect [ PortBaudRrate] |[ useBio...
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值