首页 > 其他分享 >P1638 逛画展

P1638 逛画展

时间:2024-03-31 20:22:24浏览次数:13  
标签:ch 画展 蓝桥 这道题 P1638 include

这道题的双指针筛选区间方式,和蓝桥杯的那个最大公约数一模一样:

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string>
#include <cstring>
#include <string.h>
#include <cmath>
#define For(i, j, n) for (int i = j; i <= n; ++i)
using namespace std;

const int N = 1e6 + 5, M = 2e3 + 5;

int n, m;
int a[N];
int mp[M];

inline int read()
{
    int x = 0;
    char ch = getchar();
    while (ch < '0' || ch > '9')
        ch = getchar();
    while (ch >= '0' && ch <= '9')
    {
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x;
}

int cnt;
int ansl, ansr, anslen = N;

void solve()
{
    int i = 1;
    for (int j = 1; j <= n; j++)
    {
        if (mp[a[j]] == 0)
            cnt++;
        mp[a[j]]++;
        if (cnt == m)
        {
            while (cnt == m)
            {
                mp[a[i]] = max(0, mp[a[i]] - 1);
                if (mp[a[i]] == 0)
                    cnt--;
                i++;
            }
            i--;
            mp[a[i]]++;
            cnt++;
            if (j - i + 1 < anslen)
            {
                ansl = i;
                ansr = j;
                anslen = j - i + 1;
            }
        }
    }
}

int main()
{
    scanf("%d%d", &n, &m);
    For(i, 1, n)
        scanf("%d", &a[i]);
    solve();
    printf("%d %d", ansl, ansr);
    return 0;
}

另外,也借这道题比较了一下快速读入相比scanf的速度优势:

 不过这点差距,自然是没法挽救暴力算法在时间上的劣势

标签:ch,画展,蓝桥,这道题,P1638,include
From: https://www.cnblogs.com/smartljy/p/18107201

相关文章

  • P1638 逛画展
    原题链接反思,debug不出来就赶紧看题解把!题解双指针,双指针有好几种,这个是像弹簧(窗口)一样的双指针,右指针一直往右走,当成立时,左指针一直往左走直到不成立code#include<bits/stdc++.h>usingnamespacestd;inta[1000006]={0};intmain(){ios::sync_with_stdio(false);......
  • AI壁纸画展头像表情包流量主微信抖音小程序开源版开发
    AI壁纸画展头像表情包流量主微信抖音小程序开源版开发以下是AI壁纸画展头像表情包流量主微信抖音小程序开源版的开发功能列表:用户注册和登录:实现用户注册和登录功能,包括手机号登录、第三方登录等方式。图片上传和展示:用户可以上传自己的图片或选择系统提供的图片进行展示,支持图片......
  • 逛画展(双指针)
    #逛画展##题目描述博览馆正在展出由世上最佳的$m$位画家所画的图画。游客在购买门票时必须说明两个数字,$a$和$b$,代表他要看展览中的第$a$幅至第$b$幅画(包含$a,b$)之间的所有图画,而门票的价钱就是一张图画一元。Sept希望入场后可以看到所有名师的图画。当然,他想最小......
  • P1638 逛画展
    浅浅证明一下这种做法的正确性。首先,答案一定是一个最优解,那么枚举右端点到b的时候,由于最优解是合法解,我们的左端点会走到不能走了为止,这样就求出了最优解,而且最优解一定是最小的,所以一定会记入答案。其实可以理解为把区间按照右端点分类了,而且每类区间中的最优解的左端点是递增......
  • P1638 逛画展
    逛画展题目描述博览馆正在展出由世上最佳的m位画家所画的图画。游客在购买门票时必须说明两个数字,a和b,代表他要看展览中的第a幅至第b幅画(包含a,b)之间的所有......
  • LOJ #3011. 「JOI 2019 Final」画展
    题目链接:​​传送门​​用最大的画框配最大的画显然是最优的那么挨个匹配就行#include<bits/stdc++.h>#defineusingnamespacestd;typedeflonglongll;pair<int,int>......
  • 六岁女儿的“小画展”
    家里大闺女喜欢画画做手工,有时候画了画,做了手工,都没保留下来,现在觉得挺可惜的。都是成才的记录,应该保存一下的好。下面是她之前画的画儿,记录一下:都是三岁到六岁半这段时间......