zoukankan      html  css  js  c++  java
  • POJ 3320_Jessica's Reading Problem

    题意:

    每页书都对应一个知识点,问最少看连续的多少页,才能把所有知识点都看完?

    分析:

    《挑战程序设计竞赛》介绍的尺取法反复推进区间的开头和结尾,来求取满足条件的最小区间,先确定好一个满足条件的区间,然后不断往后移,找满足条件的区间。

    代码:

    #include<iostream>
    #include<vector>
    #include<cstring>
    #include<map>
    #include<cstdio>
    #include<vector>
    #include<set>
    using namespace std;
    const int maxn = 1e6+5;
    map<int, int>cnt;
    int a[maxn];
    set<int>all;
    int main (void)
    {
        int P;scanf("%d",&P);
        for(int i = 0; i < P; i++) {
            scanf("%d",&a[i]);
            all.insert(a[i]);
        }
        int si =all.size();
        int last = 1, s = 0, res, num = 0;
        for(int i = 0; i < P; i++){
            if(cnt[a[i]]++==0) num++;
            if(num==si){
                    s = i + 1;
                    break;
            }
        }
        res = s;
    
        while(last < P){
           if(cnt[a[last-1]]==1){
               while(s<P&&a[s]!=a[last-1]) cnt[a[s++]]++;
                if(s==P) break;
                else s++;
           }else  cnt[a[last-1]]--;
    
          res = min(res, s - last);
          last++;
        }
       printf("%d
    ",res);
    
    }
    
    
  • 相关阅读:
    Minimum Cost POJ
    SPFA费用流模板
    ISAP模板
    822D My pretty girl Noora
    822C Hacker, pack your bags!
    Dinic模板
    extjs最普通的grid
    springmvc配置首页的方式
    JSTL select和checkbox的用法
    请教<context:component-scan/>和<mvc:annotation-driven/>的区别20
  • 原文地址:https://www.cnblogs.com/Tuesdayzz/p/5758812.html
Copyright © 2011-2022 走看看