ZOJ 3790 Consecutive Blocks 模拟题「建议收藏」

ZOJ 3790 Consecutive Blocks 模拟题

大家好,又见面了,我是全栈君。

Consecutive Blocks

先离散一下,然后模拟,把一种颜色i所在的位置都放入G[i]中。然后枚举一下终点位置,滑动窗体使得起点和终点间花费不超过K,求中间过程的最大值就可以。

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
#define N 100005
set<int>myset;
map<int,int>mp;
set<int>::iterator p;
int n ,k;
int a[N];
vector<int>s[N];
int go(int cur){
	int now = k;
	int ans = 1, l = 0, siz = s[cur].size();
	int len = 1;
	for(int i = 1; i < siz; i++){
		if(s[cur][i-1] == s[cur][i]-1)
		{
			len++;
			ans = max(ans, len);
			continue;
		}
		now -= s[cur][i]-s[cur][i-1]-1;
		if(now>=0)
		{ len++; ans = max(ans, len);}
		else
		{
			while(now<0)
			{
				l++;
				now += s[cur][l]-s[cur][l-1]-1;
				len--;
			}
			len++;
		}
	}
	return ans;
}
int main()
{
	int T ,m,u,v,w, i ,j;
	while(~scanf("%d %d",&n,&k)){
		myset.clear();
		mp.clear();
		for(i=1;i<=n;i++)scanf("%d",&a[i]),myset.insert(a[i]);
		for(p=myset.begin(), i = 1; p!=myset.end(); p++, i++)
			mp.insert(pair<int,int>(*p,i)),s[i].clear();
		int top = i;
		for(i=1;i<=n;i++)
		{
			a[i] = mp.find(a[i])->second;
			s[a[i]].push_back(i);
		}
		int ans = 0;
		for(i=1;i<top;i++)
			ans = max(ans, go(i));
		printf("%d\n",ans);		
	}
	return 0;
}
/*
13 3 
1000000000 2 2 1 1 2 2 5 6 8 2 2 2


*/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116171.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • varchar2 类型「建议收藏」

    varchar2 类型「建议收藏」1、varchar2在数据库表中的最大长度是4000bytesorcharacter,在oracleplsqlvarchar2最大支持长度为32767个字节SQL>declare 2       v_varvarchar2(32767); 3     begin 4       null; 5     end; 6     /

    2022年6月24日
  • PhpSpreadsheet_php file_put_contents

    PhpSpreadsheet_php file_put_contentsphp用PhpSpreadsheet对Excel进行读取、写入、修改十分便捷,下面将我在工作中用到过的操作进行总结。1、读取Excel:见文章PhpSpreadsheet读取单元格内容的坑2、修改Excel:示例代码(只保留了基础代码):$this->view->title=’填写Excel’;$abs_excel_path=$_SERVER[‘DOCUMENT_ROO…

    2022年9月16日
  • java集合类面试题_Java集合类相关面试题

    java集合类面试题_Java集合类相关面试题1、Collection和Collections的差别java.util.Collection是一个集合接口,Collection接口在Java类库中有非常多详细的实现。比如List、Setjava.util.Collections是针对集合类的一个帮助类,它提供了一系列的静态方法实现对各种集合的搜索、排序、线程安全化等操作。2、ArrayList与Vector的差别这两个类都实现了List接…

    2022年7月7日
  • postman如何安装_xiaopanos图文使用教程

    postman如何安装_xiaopanos图文使用教程PostMan最详细注册安装使用教程,图文详解,清晰明了

    2022年9月18日
  • webgame开发中的文件解密

    webgame开发中的文件解密上一篇讲的是文件的加密,这一篇记录一下如何加载并显示图片。 因为图片文件经过加密,已经成了二进制流的文件了(一堆乱码),只能使用URLStream来加载资源了。这里有一点要注意:URLStream中的读取操作是非阻塞的,在读取数据之前必须使用bytesAvailable属性来确定是否能够获取足够的数据,如何不能获取足够的数据,将引发EOFError异常。 主要思路:1、加载…

    2022年6月7日
  • vs2010 产品密钥[通俗易懂]

    vs2010 产品密钥[通俗易懂]YCFHQ9DWCYDKV88T2TMHG7BHP转载于:https://www.cnblogs.com/qiwu1314/p/8466855.html

    2022年5月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号