zoukankan      html  css  js  c++  java
  • codeforce608c Chain Reaction

    题意:n个炮台的坐标和攻击范围,只能向左攻击,可以在所有炮台位置最后部署一个炮台,攻击范围自定,问最多能有几个炮台留下

    题解:可以发现只能拆后面的炮台,dp[i]代表i后面的炮台被拆除留下的炮台个数,二分找第一个摧毁不到的位置

    #include <bits/stdc++.h>
    using namespace std;
    struct node{
        int a,b;
    }m[100100];
    int dp[100100];
    int cmp(node c,node d){
        return c.a<d.a;
    }
    int main()
    {
        int n, mid, ans=-1;
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>m[i].a>>m[i].b;
        sort(m ,m+n, cmp);
        for(int i=0;i<n;i++){
            int l = -1,r = n;
            while(l+1<r){
                mid  = (l+r)>>1;
                if(m[i].a-m[i].b > m[mid].a) l = mid;
                else r = mid;
            }
            if(l == -1) dp[i] = 1;
            else dp[i] = dp[l]+1;
            ans = max(ans, dp[i]);
        }
        cout<<n-ans<<endl;
        return 0;
    }
  • 相关阅读:
    题解[51nod1555] 布丁怪
    题解 [51nod1753] 相似子串
    题解[NOIP2017] 列队
    题解 [NOIP2015]运输计划
    题解 [APIO2014]连珠线
    题解 [ZJOI2010]基站选址
    [学习笔记] kmp
    RPC&ORM
    Spring
    常用工具
  • 原文地址:https://www.cnblogs.com/Noevon/p/7106193.html
Copyright © 2011-2022 走看看