zoukankan      html  css  js  c++  java
  • 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
    ",ans);		
    	}
    	return 0;
    }
    /*
    13 3 
    1000000000 2 2 1 1 2 2 5 6 8 2 2 2
    
    
    */
    


  • 相关阅读:
    内部类
    java的静态方法多态和匿名对象
    java的重载 和重写
    java多态成员的特点
    java 接口的概念
    linux时间修改-hwclock和date
    mysql配置主从复制和常见问题
    mysql日志种类、二进制日志模式、mysqlbinlog解析二进制日志
    mysql主从复制介绍
    mysql备份与还原-mysqldump备份、mysql与source还原
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4195472.html
Copyright © 2011-2022 走看看