ZOJ 3790 Consecutive Blocks (离散化 + 暴力)
虽然是一道暴力的题目,但是思路不好想。刚开始还超时,剪枝了以后1200ms,不知道为什么还是这么慢。
题意:给你n个点,每个点有一种颜色ci,给你至多k次删除操作,每次删除一个点,问最多k次操作后连在一起的点颜色相同的最大长度。
思路:由于ci 最大为10^9, 所以需要首先离散化。然后暴力。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <map>
#include <vector>
#include <algorithm>
#define LL long long
using namespace std;
const int maxn = + ;
vector<int>v[maxn];
int c[maxn], ans, n, k; void cal(int x)
{
int i, sz = v[x].size();
int sum, p;
if(sz <= ans)
return;
for(i = ; i < sz; i++) //暴力枚举开始的连续的一串都为x的数字。
{
sum = ;
for(p = i; p < sz-; p++)
{
if(sum+v[x][p+]-v[x][p] - >k)
break;
sum += v[x][p+] - v[x][p] - ;
}
sum = v[x][p] - v[x][i] + - sum;
ans = max(ans, sum);
if(p == sz-)
break;
}
}
int main()
{
int i, a, cnt;
while(~scanf("%d%d", &n, &k))
{
ans = ;
map<int, int>mp;
cnt = ;
for(i = ; i < n; i++)
{
scanf("%d", &a);
if(mp[a] == ) mp[a] = cnt++; //离散化 cnt.
c[i] = mp[a];
v[mp[a]].clear();
}
for(i = ; i < n; i++) v[c[i]].push_back(i);
for(i = ; i < cnt; i++)
cal(i);
printf("%d\n", ans);
}
return ;
}
ZOJ 3790 Consecutive Blocks (离散化 + 暴力)的更多相关文章
- zoj 3790 Consecutive Blocks 离散化+二分
There are N (1 ≤ N ≤ 105) colored blocks (numbered 1 to N from left to right) which are lined up in ...
- ZOJ 3790 Consecutive Blocks 模拟题
problemCode=3790">Consecutive Blocks 先离散一下,然后模拟,把一种颜色i所在的位置都放入G[i]中.然后枚举一下终点位置,滑动窗体使得起点和终点间花 ...
- ZOJ 3790 Consecutive Blocks
大致题意就是给你一个数列,让你最多移除K个数字,使得连续的相同数字的长度最大,并求出最大长度. 我们将此序列按颜色排序,颜色相同的话按位置排序,那么排完序之后颜色相同的blocks就在一起,只是他们的 ...
- ZOJ 2747 Paint the Wall(离散化+暴力)题解
题意:给你一个面,然后涂颜色,问你最后剩多少颜色,每种颜色面积. 思路:第一反应是二维线段树,代码又臭又长,可以做.但是这题暴力+离散化就可以过.可以看到他给的n只有100,也就是说最坏情况下会涂10 ...
- zoj 2976 Light Bulbs(暴力枚举)
Light Bulbs Time Limit: 2 Seconds Memory Limit: 65536 KB Wildleopard had fallen in love with hi ...
- HDU 5258 数长方形【离散化+暴力】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=5258 数长方形 Time Limit: 2000/1000 MS (Java/Others) Me ...
- HDU 1199 && ZOJ 2301 线段树离散化
一段长度未知的线段.一种操作:a b c ,表示区间[a,b]涂为颜色C,w代表白色,b代表黑色,问终于的最长连续白色段,输出起始位置和终止位置 离散化处理.和寻常的离散化不同,须要把点化成线段.左闭 ...
- zoj 3299(区间改动+离散化)
题意:有n个由小木块组成的长条木块要掉下来.给出木块的左右区间,然后有给了m个木板的左右区间和高度用来接住木块,由于木块是由小木块接触组成的,也就是木板能够接住一部分的木块.剩下的会继续掉落,问最后每 ...
- ZOJ 3939 The Lucky Week (暴力找规律)
题意:给定一个幸运日,求第 k 个幸运日是多少. 析:由于闰年,每400肯定会循环一次,所以我们就可以先找出每400年会有多少幸运日,是2058个,然后再暴力. 代码如下: #pragma comme ...
随机推荐
- Configure xterm Fonts and Colors for Your Eyeball
https://wiki.mpich.org/mpich/index.php/Configure_xterm_Fonts_and_Colors_for_Your_Eyeball Screenshot ...
- 【软件工程-Teamwork 2】必应词典软件手机版测试报告
测试人员:聂健(N).居玉皓(J).吴渊渊(Wy).汪仁贵(Wr).吕佳辉(L).杜冰磊(D) 测试软件:必应词典软件手机版 版本:2.2.0版本(Android) 引言: 我们的测评报告的主体主要分 ...
- android聊天,存储聊天记录sqlite
项目中有聊天模块,需要用到打开activity的时候初始化聊天记录的情况.大致情况如下: 辅助类:ChatSQLiteHelper 在第一次时会调用oncreate方法(判断的标准是schedul ...
- 2005: [Noi2010]能量采集 - BZOJ
Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的植物种得 ...
- Sublime text 取消记住上一次打开的,这功能太墨迹了!
比较恨,这sublime text的配置全部都是配置文件. 选择菜单:Preferences->Settings-User,增加配置项 //热退出,其实实现一种模拟没有退出的状态,当程序再次启动 ...
- LINQ基础
以下为<C#图解教程>读书笔记 LINQ是 直接嵌入C#的强类型查询语言 与LINQ相关的特性: 隐式类型的本地变量:使用var 对象/集合初始化语法:对象初始化语句/对象初始化器/对象初 ...
- CSS属性--过渡(transtion)
首先介绍一下transition的属性取值: transition-property : 主要设置对象中的参与过渡的属性,包括(border-color,background-color,color) ...
- asp.net 获取客户机IP地址
/// <summary> ///get client IP /// </summary> /// <returns></returns> public ...
- Java垃圾收集器
概述 说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物.事实上,GC的历史远远比Java久远,1960年诞生于MIT的Lisp是第一门真正使用 ...
- android 上下文菜单详解
本文使用xml来创建上下文菜单 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:andr ...