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

洛谷P1638逛画展

时间:2024-10-14 21:35:39浏览次数:1  
标签:cnt 图画 洛谷 画展 int 样例 le10 leq P1638

逛画展

题目链接

题目描述

博览馆正在展出由世上最佳的 \(m\) 位画家所画的图画。

游客在购买门票时必须说明两个数字,\(a\) 和 \(b\),代表他要看展览中的第 \(a\) 幅至第 \(b\) 幅画(包含 \(a,b\))之间的所有图画,而门票的价钱就是一张图画一元。

Sept 希望入场后可以看到所有名师的图画。当然,他想最小化购买门票的价格。

请求出他购买门票时应选择的 \(a,b\),数据保证一定有解。

若存在多组解,输出 \(a\) 最小的那组

输入格式

第一行两个整数 \(n,m\),分别表示博览馆内的图画总数及这些图画是由多少位名师的画所绘画的。

第二行包含 \(n\) 个整数 \(a_i\),代表画第 \(i\) 幅画的名师的编号。

输出格式

一行两个整数 \(a,b\)。

样例 #1

样例输入 #1

12 5
2 5 3 1 3 2 4 1 1 5 4 3

样例输出 #1

2 7

提示

数据规模与约定

  • 对于 \(30\%\) 的数据,有 \(n\le200\),\(m\le20\)。
  • 对于 \(60\%\) 的数据,有 \(n\le10^5\),\(m\le10^3\)。
  • 对于 \(100\%\) 的数据,有 \(1\leq n\le10^6\),\(1 \leq a_i \leq m\le2\times10^3\)。

双指针解法

#include<iostream>
using namespace std;
const int N = 1e6 + 10;
int n, m;
int a[N],cnt[2005];
int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++) cin >> a[i];

	int num = 1, len = 1e9;
	int l = 1, r = 1;
	cnt[a[1]] = 1;
	for (int i = 1, j = 1; j <= n;) {
		if (num < m) {
			j++;
			cnt[a[j]]++;
			if (cnt[a[j]] == 1) num++;
		}
		if (num == m) {
			if (len > j - i + 1) {
				len = j - i + 1;
				l = i; r = j;
			}
			cnt[a[i]]--;
			if (cnt[a[i]] == 0) num--;
			i++;
		}
	}
	cout << l << " " << r << endl;
	return 0;
}

二分答案解法

标签:cnt,图画,洛谷,画展,int,样例,le10,leq,P1638
From: https://www.cnblogs.com/xkgc/p/18466187

相关文章

  • 洛谷P1644跳马问题
    跳马问题题目链接题目背景在爱与愁的故事第一弹第三章出来前先练练四道基本的回溯/搜索题吧……题目描述中国象棋半张棋盘如图\(1\)所示。马自左下角\((0,0)\)向右上角\((m,n)\)跳。规定只能往右跳,不准往左跳。比如图\(1\)中所示为一种跳行路线,并将路径总数打印出来......
  • 洛谷P1381单词背诵
    单词背诵题目描述灵梦有\(n\)个单词想要背,但她想通过一篇文章中的一段来记住这些单词。文章由\(m\)个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个)。并且在背诵的单词量尽量多的情况下,还要使选出的文章段落尽量短,这样她就可以用尽量短的......
  • 洛谷P1219八皇后问题
    [USACO1.5]八皇后CheckerChallenge题目链接题目描述一个如下的\(6\times6\)的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列\(2\4\6\1\3\5\)来描述,第\(i\)个数......
  • 洛谷P1373:小 a 和 uim 之大逃离
    洛谷P1373:小a和uim之大逃离题意略思路DP:记dp[i][j][c][0/1]表示走到\(i\)行\(j\)列时,两人容量之差为\(c\)的方案数,\(0\)表示\(\rm小a\)走的最后一步,\(1\)表示\(\rmuim\)走的最后一步。容易得出转移方程:dp[i][j][l][0]+=dp[i-1][j][l-a[i][j]+k][1];dp[......
  • 洛谷题单指南-字符串-P5283 [十二省联考 2019] 异或粽子
    原题链接:https://www.luogu.com.cn/problem/P5283题意解读:n个整数,每次从从取l~r的数进行异或得到美味值,一共取k次,并计算这k个美味值之和的最大值。解题思路:1、如何O(1)的计算l~r数的异或,得到美味值可以借助前缀和思想,a[i]为第i个数,s[i]表示a[1]~a[i]每个数的异或值,要计算l~r的......
  • 洛谷学习总集2
    洛谷代码学习总集2目录索引P1067输出多项式的字符串P1098将切片展开成完整字符串P1067输出多项式的字符串思路:多项式由:系数,"x",""指数,组成。其中各项多项式间由"+"连接,如果系数/指数为1则不需要打印系数/""指数。特殊情况:读入1、末两项(指数为1和指数为0)针对......
  • 洛谷 P2071 座位安排题解
    因为一个人坐一个座位很像二分图,题意转化为二分图最大匹配。把人放在左部,把座位放在右部,一排座位占右部的两个点。假设人想要坐在\(x\)排,那么建图的时候就可以将这个人连向\(2x\)和\(2x+1\)。这样一排就对应着两个人了。由于\(n\le4000\),直接由朴素的\(O(nm)\)的匈牙利......
  • 01背包问题/Ieee全球极限编程大赛11.0题BeetleBag题解/洛谷P1926 小书童——刷题大军
    基础01背包问题概述给出一个容积为V的背包,有i个物体,每个物体都有自己的体积和价值,用Vi和Wi表示,要将这些物体装进背包里面,问怎样才能使得装入物体的总价值最大?最大为多少?解决思路1.如果你没能正确理解这道题,尤其是对于很多新手,第一反应可能是将所有物体的单位价值算出来,然后......
  • 洛谷P8818 [CSP-S 2022] 策略游戏
    Problem给出两个数组A,B,进行q次询问,每次分别给出这两个数组的某个区间l1,r1,l2,r2,也就是\(A_{l1\simr1}\)与\(B_{l2\simr2}\),有两位同学小L和小Q分别从A,B的以上区间中选一个数,而两数乘积为此次操作的分数,小L希望分数大,小Q希望分数小,请问他们每次以最优策略进行游戏,分数将会......
  • 洛谷P1102 A-B数对
    A-B数对题目背景出题是一件痛苦的事情!相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的A+BProblem,改用A-B了哈哈!题目描述给出一串正整数数列以及一个正整数\(C\),要求计算出所有满足\(A-B=C\)的数对的个数(不同位置的数字一样的数对算不同的数对)。输入格......