普及培优班day14C题WA90求助!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

描述
【题目描述】

外星幼儿园的小朋友被老师们布置了堆积成山的作业。
外星幼儿园有很多科目需要学习,每个科目都有可能布置作业。但是作业必须严格按照顺序完成。
老师给作业分配的量非常合理,每一个作业需要一天的时间完成。
但是小朋友们做作业存在消极怠工的现象,假设今天做完了科目k的作业,那么在一段时间m天之内,他都不想做科目k的作业了。

现在给你完成作业的顺序,帮帮小朋友们看看他最快能够多少天完成所有作业

【输入格式】

第一行有两个整数 n和m,n表示作业的总数,m表示消极怠工期的天数 第二行输入一个数组 works,数组长度为 n,数字用空格分隔,代表每个作业的科目

【输出格式】

输出一行,共一个数,表示最快能够多少天完成所有作业

【样例输入1】

6 3 1 2 1 2 3 1

【样例输出1】

9

【样例解释1】

在 9 个单位时间完成所有作业的一种方法是: 第 1 天:完成作业 0 。 第 2 天:完成作业 1 。 第 3 天:消极怠工。 第 4 天:消极怠工。 第 5 天:完成作业 2 。 第 6 天:完成作业 3 。 第 7 天:消极怠工。 第 8 天:完成作业 4 。 第 9 天:完成作业 5 。 可以证明无法少于 9 天完成所有作业。

【数据范围】

对于20%的数据来说 1 <= n <= 100 1 <= works[i] <= 100 1 <= m <= n 对于100%的数据来说 1 <= n <= 1e5 1 <= works[i] <= 1e9 1 <= m <= n
代码:

#include<bits/stdc++.h>                 
#define int long long
using namespace std;
int n,m,a[100010];
map<int,int>mp; 
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	int res=0;
	for (int i=1;i<=n;i++)
	{
		cin>>a[i];
		if (mp[a[i]]==0||mp[a[i]]+m<i)
		{
			res++;
			mp[a[i]]=i;
		}
		else
		{
			int r=mp[a[i]]+m+1;
			mp[a[i]]=r;
			res=r;
		}
	}
	cout<<res;
	return 0;
}
3 个赞

不开long long见祖宗!

2 个赞

回复老帖
呼叫管理员

1 个赞