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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Selenium系列5-XPath路径表达式

    Selenium系列5-XPath路径表达式

    2021年11月30日
    47
  • 知识蒸馏(Knowledge Distillation)

    知识蒸馏(Knowledge Distillation)1、DistillingtheKnowledgeinaNeuralNetworkHinton的文章"DistillingtheKnowledgeinaNeuralNetwork"首次提出了知识蒸馏(暗知识提取)的概念,通过引入与教师网络(teachernetwork:复杂、但推理性能优越)相关的软目标(soft-target)作为totalloss的一部分,以诱导学…

    2022年6月13日
    28
  • 安卓ExpandableListView的详细使用教程(附代码解析过程)「建议收藏」

    安卓ExpandableListView的详细使用教程(附代码解析过程)「建议收藏」ExpandableListView又称可扩展的ListView,它可以实现点击父项展开子项的效果,本文实现了一个比较精美的ExpandableListView。

    2022年6月30日
    25
  • java渗透测试框架_java编程

    java渗透测试框架_java编程(7)sqlmap(python脚本学习下)经典sql注入工具(这种针对参数的工具,不知道是不是扫描方式有问题,还是怎么着,怎么才能抓几个包,或者把常用点的包抓出来)抓几个sqlmap的包sqlmap功能很强大,这里就抓了一个结合burpsuitePOSTsqlmap的包(也可以用Burpsuitesqlmap插件http://www.freebuf.com/tools/6426.html)命令:…

    2022年8月12日
    3
  • Fiddler工具之Filters[通俗易懂]

    Fiddler工具之Filters[通俗易懂]Fiddler工具之FiltersFiddler是一个强大的抓包工具,可以抓取Http/Https协议的数据包,也可以实现截包、过滤包,修改包等等,今天我们一起学习一下Fildder中Filters功能的滤过包和截包;1、首先打开Fiddler主界面,查看右侧功能区选择Filfters标签,勾选UseFilters复选框;(图1)Hosts配置2、Fiddler默认是会拦截所有的…

    2022年5月11日
    39
  • yiq颜色模型应用于_如果rgb色彩模式中

    yiq颜色模型应用于_如果rgb色彩模式中00.目录文章目录00.目录01.YIQ模式概述02.NTSC制式03.YIQ模式优势04.RGB转YIQ05.附录01.YIQ模式概述YIQ,是NTSC(NationalTelevisionStandardsCommittee)电视系统标准。Y是提供黑白电视及彩色电视的亮度信号(Luminance),即亮度(Brightness),I代表In-phase,色彩从橙色到青色,Q代表Quadrature-phase,色彩从紫色到黄绿色。02.NTSC制式NTSC制式,又简称

    2022年10月24日
    0

发表回复

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

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