zoukankan      html  css  js  c++  java
  • 汕头市队赛 SRM 09 A 撕书

    A 撕书I-3 SRM 09

    背景&&描述

        琉璃在撕书。
        书总共有n页,都悬浮在数轴上,第i页的位置为p_{i},上面写着一个数字a_{i}
        琉璃从右往左撕书。假如看到了第i页,就把在第i页左边,且与之距离<=a_{i}的书都撕掉。(第i页本身不撕)
        夜子为了尽量地保全魔法书,决定偷偷在琉璃开始撕之前,增加一页。增加的这一页必须在所有书页的右边,数字随意。
        夜子想知道,最少会有多少页书被撕毁。

    输入格式

    第一行一个整数n,表示书页数。

    接下来n行,第i行的俩整数分别为p_{i}a_{i}

    输出格式

    一个整数,表示最少被撕毁的书页数。

    样例输入

    4
    1 9
    3 1
    6 1
    7 4

    样例输出

    1

    数据范围与约定

    • 对于100%的数据:1leq nleq 10^6,0leq p_{i}leq10^6 ,1leq a_{i}leq10^6,保证不同页的位置不同。

    来源

    cf原题

    错在位置等于0时树状数组没有特判掉QAQ 最后坐标全部+1就是答案了

    ————————————————————————————————————————

    这道题很容易想到那个可以多加一页就是可以消去最后的某一段以实现答案的最优

    所以我们只需要考虑每个点 如果他要保留 那么他要撕掉多少页 记录一答案就行辣

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define LL long long
    using namespace std;
    const int M=1e6+7;
    int read(){
        int ans=0,f=1,c=getchar();
        while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}
        while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}
        return ans*f;
    }
    int ans,n,sum[M],s[M],mx;
    struct node{int x,c;}e[M];
    bool cmp(node a,node b){return a.x<b.x;}
    int lowbit(int x){return x&-x;}
    int query(int x){
        int sum=0;
        while(x>0){sum+=s[x]; x-=lowbit(x);}
        return sum;
    }
    void insert(int x){
        while(x<=mx){
            s[x]++;
            x+=lowbit(x);
        }
    }
    int main()
    {
        n=read();
        for(int i=1;i<=n;i++) e[i].x=read()+1,e[i].c=read(),mx=max(mx,e[i].x);
        sort(e+1,e+1+n,cmp);
        for(int i=1;i<=n;i++){
            int k=query(e[i].x-e[i].c-1);
            sum[i]=sum[k]+1;
            ans=max(sum[i],ans);
            insert(e[i].x);
        }
        printf("%d
    ",n-ans);
        return 0;
    }
    View Code
  • 相关阅读:
    4.9 省选模拟赛 圆圈游戏 树形dp set优化建图
    C#异步编程の-------异步编程模型(APM)
    C#异步编程の----Threadpool( 线程池)
    C#の----Func,Action,predicate在WPF中的应用
    C#常见委托のdelegate定义,Func,Action,Predicate总结
    c++のmap的遍历
    C#深度学习の----深拷贝与浅拷贝
    NSIS学习记录の----查找注册表某个键是否存在
    WPFの操作文件浏览框几种方式
    C#Url处理类
  • 原文地址:https://www.cnblogs.com/lyzuikeai/p/7282566.html
Copyright © 2011-2022 走看看