zoukankan      html  css  js  c++  java
  • 培训期间做题整理(部分)

    讲了很多题,把做了的分类整一下?

    dp部分

    1.bzoj2298

    这道题有一个很神的思路。就是说把每个人成绩的范围看成一条线段,然后dp求不重叠的覆盖。记得相同的边要合并一下,记录为边的权值。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int n,f[100010],cnt;
    struct Node
    {
        int l,r;
    }e[100010];
    bool cmp(Node a,Node b)
    {
        if(a.r==b.r)
            return a.l<b.l;
        else
            return a.r<b.r;
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            if(a+b>=n)
                continue; 
            e[++cnt].l=a+1;
            e[cnt].r=n-b;
        }
        sort(e+1,e+1+cnt,cmp);
        int j=1;
        for(int i=1;i<=n;i++)
        {
            f[i]=f[i-1];
            while(e[j].r<i)
                j++;
            int tot=0;
            while(e[j].r==i)
            {
                if(e[j].l==e[j-1].l)
                    tot++;
                else
                    tot=1;
                f[i]=max(f[i],f[e[j].l-1]+min(i-e[j].l+1,tot));
                j++;
            }
        }
        cout<<n-f[n];
        return 0;
    }
  • 相关阅读:
    第一阶段冲刺第五天
    第一阶段冲刺第四天
    构建之法阅读笔记03
    第一阶段冲刺第三天
    第一阶段冲刺第二天
    第十一周进度
    第一阶段意见评论
    第十周进度
    第九周进度
    人月神话阅读笔记03
  • 原文地址:https://www.cnblogs.com/Eternal-Glory/p/9452011.html
Copyright © 2011-2022 走看看