UVa 1608 Non-boring sequence (分治)

UVA 1608:Non-boring sequences(递归+分治思想) We were afraid of making this problem statement too boring, so we decided to keep it short. A sequence is called non-boring if its every connected subsequence contains a unique element, i.e. an element such 阅读详情

题目链接:https://vjudge.net/problem/UVA-1608

题意:给出一个整数序列,若序列的任意一个连续子序列都至少有一个只出现一次的元素,则该序列为不无聊序列。判断一个序列是否无聊。

思路:若某个元素在整个序列中只出现一次,则所有包含该元素的连续子序列都为不无聊序列。因此,找到这样一个元素后,只需判断该元素左边与右边的序列是否为无聊序列即可。 怎么找到这样的元素呢?可以对每个序列预先处理出其左边及其右边第一个和它相同的值得位置,这样就可以在O(1)的复杂度内判断了。


#include<cstdio>
#include<cstring>
#include<string>
#include<cctype>
#include<iostream>
#include<set>
#include<map>
#include<cmath>
#include<sstream>
#include<vector>
#include<stack>
#include<queue>
#include<algorithm>
#define fin(a) freopen("a.txt","r",stdin)
#define fout(a) freopen("a.txt","w",stdout)
typedef long long LL;
using namespace std;
typedef pair<int, int> P;
const int INF = 1e8 + 10;
const int maxn = 1e5 + 10;
map<int, int> mp;
int a[maxn], n;
int pre[maxn], after[maxn];

bool judge(int L, int R, int p)
{
    return pre[p] < L && after[p] > R;
}


bool solve(int L, int R)
{
    if(L >= R) return true;
    int i = L, j = R;
    while(i <= j && (i <= R || j >= L))
    {
        if(i <= R && judge(L, R, i)) return solve(L, i-1) && solve(i+1, R);
        if(j >= L && judge(L, R, j)) return solve(L, j-1) && solve(j+1, R);
        i++, j--;
    }
    return false;
}

int main() {
  int T;
  scanf("%d", &T);
  while(T--)
  {
      mp.clear();
      scanf("%d", &n);
      for(int i = 1; i <= n; i++)
      {
          scanf("%d", &a[i]);
          if(mp.count(a[i]))
          {
              pre[i] = mp[a[i]];
              after[mp[a[i]]] = i;
          }
          else
          {
              pre[i] = -1;
              after[i] = n+1;
          }
          mp[a[i]] = i;
      }
      if(solve(1, n)) printf("non-boring\n");
      else printf("boring\n");
  }
  return 0;
}


特斯拉 Model 3解析(八)全面拆解特斯拉自动驾驶大脑:AP控制器硬核技术解析 算力极限:双FSD = 144 TOPS,专为AI推理优化。存储架构:LPDDR4 + NAND + NOR,保证高速/可靠启动。通信架构:以太网传视频,CAN传控制,TSN保障实时性。感知输入:多路摄像头 + 高速SerDes,满足全景感知。电源设计:功率模块+被动元件海洋,稳定性优先。功能安全:双芯片冗余 + GPS + 紧急呼叫,容错率极高。🎯 在我看来,特斯拉AP控制器就是一台“车载超算”,它在电源设计、存储架构和功能安全上远超一般新势力方案。 阅读详情

相关推荐

07- Rossmann商店销售预测 (Xgboost集成算法) (项目七)

Rossmann在欧洲国家经营着3000多家日化用品超市。目前,Rossmann商店经理的任务是提前6周预测他们的日销售额。商店的销售受到许多因素的影响,包括促销、竞争、学校和国家假日、季节性和地域性。由于数以千计的管理者根据自己的特殊情况预测销售,结果的准确性可能会有很大的差异。 因此使用机器学习算法对销量进行预测,Rossmann要求预测德国1115家商店的6周日销售额。可靠的销售预测使商店经理能够制定有效的员工时间表,提高生产力和积极性。

March_A的博客 2462

BZOJ4059Non-boring sequences——启发式分治

题目描述 我们害怕把这道题题面搞得太无聊了,所以我们决定让这题超短。一个序列被称为是不无聊的,仅当它的每个连续子序列存在一个独一无二的数字,即每个子序列里至少存在一个数字只出现一次。给定一个整数序列,请你判断它是不是不无聊的。 输入格式 第一行一个正整数T,表示有T组数据。每组数据第一行一个正整数n,表示序列的长度,1 &lt;= n &lt;= 200000。接下来一行n个不超过10^9的非负整...

stevensonson的博客 500

单细胞分析实战:用R语言绘制带连线的堆叠柱状图(附完整代码)

本文详细介绍了如何使用R语言绘制带连线的堆叠柱状图进行单细胞转录组数据分析,特别适用于展示细胞比例变化趋势。通过完整代码示例和实战技巧,帮助研究者优化多组别比较的可视化效果,提升科研图表质量。

yhn4567890的博客 390

【BZOJ 4059】 (分治暴力|扫描线+线段树)

4059: [Cerc2012]Non-boring sequences Time Limit:10 SecMemory Limit:128 MBSubmit:632Solved:227 Description 我们害怕把这道题题面搞得太无聊了,所以我们决定让这题超短。一个序列被称为是不无聊的,仅当它的每个连续子序列存在一个独一无二的数字,即每个子序列里至少...

weixin_30278311的博客 173

保姆级教程:用Docker快速部署mpromonet/webrtc-streamer实现WebRTC直播(附常见问题解决)

本文提供了一份详细的Docker部署mpromonet/webrtc-streamer的实战指南,帮助用户快速搭建WebRTC直播服务。内容涵盖从环境准备、基础部署到进阶配置与性能调优的全过程,并针对容器网络、视频流配置、跨网访问等常见问题提供了解决方案,旨在实现低延迟的流媒体传输。

dell8的博客 177

Fluent新手避坑:遇到‘Floating point exception’别慌,这7个排查步骤帮你搞定

本文为Fluent新手提供了遇到‘Floating point exception’错误时的7个详细排查步骤。从理解浮点异常的本质到边界条件检查、时间步长设置、求解器选择、网格优化、亚松弛因子调节以及高阶格式的取舍,帮助用户快速定位并解决问题,确保CFD仿真的稳定性和准确性。

weixin_30480075的博客 260

UVA1608 不无聊的序列 Non-boring sequences

分治 首先感谢lrj的透彻讲解。 开始的时候我们可以用map来求出一个数的上一次出现的位置和下一次出现的位置,然后能判断一个数在\(l\)到\(r\)中这个数是否只出现了一次。 既然任意连续子序列都至少有一个元素唯一,那么我们可以找到这个序列中一个唯一存在的数,我们姑且认为ta的下标是k,进而我们发现任何包含这个数的区间都不是无聊的区间。 所以我们可以接着判断\(l\)到\(k-1\)的...

aolao6697的博客 362

tiktok算法协议研究

经过上述分析,可以确定目标字符串来源于一段 JSON 数据,而这段 JSON 数据来自于一个经过加密的本地文件。对字符串 "sdi_v2" 进行 SHA-1 计算,得到 20 字节的结果;将第一步得到的数据进行MD5计算,生成16字节的结果;将第二步的结果转换为十六进制字符串,从而得到 32 字节的密钥。写这种算法分析的帖子真的是太无聊了,就先分析到这里吧,后续有机会再来谈下被加密的本地文件是怎么来的!!自我感觉TT的算法并不难,就是量太大了,所以我想问问有没有感兴趣的朋友来一起分析,欢迎联系。

2503_90751938的博客 2575

[分治] UVa1608 Non-boring sequences 不无聊序列 (分治与中途相遇法的结合)

题目 思路 1.主要思路:如果有一个只出现一次的元素A[p],那么所有包含此元素的所有连续子序列都满足不无聊。那么只需分治判断A[0~p-1]和A[p+1~n]是否不无聊即可。 2.分治方向的选择:(上界分析) 从左往右找:最坏情况是唯一元素恰好在最右边。T(n)=T(n−1)+O(n)=O(n2)T(n)=T(n−1)+O(n)=O(n2)T(n) = T(n-1)+O(n) = ...

OI - IceCab 588

电化学-论文分享-NanoStat: An open source, fully wireless potentiostat

本文主要分享论文NanoStat: An open source, fully wireless potentiostat,并记录学习笔记。如果有条件,建议看原文最好。

分享技术笔记,希望对大家能够有一定的帮助,同时也通过归纳总结提升自己的个人能力。 2874

2026年1至9月武汉市房地产价格深度分析报告

本报告基于2026年1月至9月武汉市实际成交案例,从成交价格、区域分布、户型结构、价格走势等维度进行深度分析。数据来源包括武汉市住房保障和房屋管理局备案数据、主要中介机构成交记录及典型楼盘网签案例,覆盖全市15个行政区及主要功能板块。

王国平的博客 327

【BZOJ4059】Non-boring sequences

Solution   记序列为\(a\),计算出与\(a_i\)相等的前一个元素的位置\(pre_i\),以及后一个元素的位置\(nex_i\),显然,对于那些左端点处于\((pre_i,i]\)以及右端点处于\([i,nex_i)\)的区间都可以认为是合法的。      那么我们可以将每个区间\([l,r]\)抽象成一个二维平面的点\((l,r)\),每一个元素可以使得一部分区间合法,可以抽象为...

weixin_30587927的博客 180

极智芯 | 解读国产CPU之海光

大家好,我是极智视界,本文分享一下 解读国产CPU之海光。希望我的分享能对你的学习有一点帮助。

极智视界 3318

UVA 1608 Non-boring sequence 不无聊的序列(分治,中途相遇)

题意:给你一个长度为n序列,如果这个任意连续子序列的中都有至少出现一次的元素,那么就称这个序列是不无聊的,判断这个序列是不是无聊的。 先预处理出每个元素之前和之后相同元素出现的位置,就可以在O(1)的时间判断出一个元素在一个区间内是否唯一。 每次从大的序列中找一个唯一元素,包含这个元素的就不用判断了,那么以这个元素为分界线,在分别判断两边的序列。 如果只从一遍找的话,最坏的情况是唯一元素在另...

weixin_34109408的博客 124

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

UVa 1608 Non-boring sequences (分治法)

题目链接: https://cn.vjudge.net/problem/UVA-1608 解法:首先想到分治法,若一个序列是“non-boring”就要求,其中任何一个连续的子序列中至少得有一个只出现一次的元素。所以我们可以先找出一个只出现过一次的元素A[k],若找不到这样的A[k],直接输出“boring“就ok了,现在我们假设能够找到A[k],这样一来,我们就可以将问题划分一下,判断A[0]...

super_son的博客 472

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

UVA 1608 Non-boring sequence

题目大意就是判断一个序列中,对于任意子序列是否存在重复元素,如果是则序列是无聊的,否则是不无聊的。 思路       分治,中途相遇法 紫书上的思路已经很清晰了,首先是找到一个当前序列中不重复的元素,递归判断被它分隔的左序列和右序列是否满足题意。 直到找到只有一个元素的序列为止。如果在扫描一个序列是从左到右扫描,最坏情况是在另一端,则 时间复杂度是O(n^2) 如 果用中

Face the light 411

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

UVA 1608 Non-boring sequences (递归分治)

题解:小白上的题,如果一个序列的任意连续子序列中至少有一个只出现一次的元素,则称这个序列是不无聊的,输入一个n(n<=200000)个元素的序列A,判断是不是不无聊的在整个序列中找一个只出现一次的元素,如果不存在,则这个序列不是不无聊的;如果找到一个只出现一次的元素A[P],那么只需检查A[1..P-1]和A[P+1…n]是否满足条件, 首先要解决的问题是如果快速的查找某个数字在

围巾的ACM博客 1116

UVA - 1608 Non-boring sequences 递归,分治

DescriptionWe were afraid of making this problem statement too boring, so we decided to keep it short. A sequence is called non-boring if its every connected subsequence contains a unique element, i.e

wuyin_Jane的博客 484

uva1608 non-boring sequences

预处理+分治

YHaX的博客 936

bzoj4059

题解: 还是一道不错的题目 首先它要求每个区间都满足要求,所以我们很容易想到将它映射到二维平面上 然后我们算出每个数的前驱以及后继li,ri 那么第一维是li-i,第二维是i-ri的区间就是合法的,同理交换 这样就变成了矩形覆盖问题 然后因为是不能遍历所有点的所以二维差分是不行的 2种方法 1.线段树+扫描线,将矩形两条边变为一条插入一条删除 nlogn 2.二维线段树 nlog...

weixin_30780221的博客 178

BZOJ4059 [Cerc2012]Non-boring sequences

很厉害的题啊…… 不过也是道卡常题…… 先离散化一下,处理出每个元素前一个和后一个相等的元素 建议用两遍sort离散化,否则容易TLE 然后我们考虑[L,R]的所有子串是否合法,我们考虑从两边向中间找第一个前一个和后一个都不在这个区间里的元素,然后就可以把区间分成两部分递归 即,先判断L是否只出现一次,再判断R,再判断L+1,再判断R-1…… 这样的话复杂度是nlogn的 原理的话,

neither_nor 542

bzoj4059 [Cerc2012]Non-boring sequences 分治

Description 我们害怕把这道题题面搞得太无聊了,所以我们决定让这题超短。一个序列被称为是不无聊的,仅当它的每个连续子序列存在一个独一无二的数字,即每个子序列里至少存在一个数字只出现一次。给定一个整数序列,请你判断它是不是不无聊的。 1 &lt;= n &lt;= 200000。接下来一行n个不超过10^9的非负整数,表示这个序列。 Solution 一个非常显然的想法...

olahiuj的博客 452

bzoj4059 [Cerc2012]Non-boring sequences

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4059 【题解】 考虑分治。定义过程solve(l,r)为判断全在[l,r]范围内的所有连续子序列是不是non-boring的 那么我们预处理每个地方的前一个与它相同的数pre[i]和后一个与它相同的数nxt[i]。 显然对于i属于[l,r],如果存在pre[i]<l,...

aklm45097的博客 223

不无聊的序列(Non-boring sequences,Bzoj4059,CERC2012)

不无聊的序列分治解法

Leo的博客 2513

UVa 1608 不无聊的序列(Non-boring sequences)

题意: 如果一个序列的任意连续子序列中至少有一个只出现一次的元素,则称这个序列是不无聊的,输入一个n个元素的序列A,判断他是不是无聊的。 代码: #include<bits/stdc++.h> #define LL long long #define ms(s) memset(s, 0, sizeof(s)) using namespace std; const LL maxn = 2...

Inuyasha__的博客 426

UVA1608- non-boring sequence

题面 题解 这题简直太神了,可以说是把时间复杂度的数学分析发挥到了极致。 如果这个序列中找不到唯一的元素,那么这个序列必然是无聊的;如果这个序列中存在唯一的元素p,那么所有包含这个元素的连续序列就都合法了,所以我们就只需要检查[1…p-1]和[p+1…n],然后递归求解,复杂度为T(n)=max(T(p-1)+T(n-p)+找到p的时间)。 找到p最直接的方法是开个桶或者map,扫一遍,复杂度O(...

china_xyc的博客 177
上一篇: Light OJ 1151 (概率DP、高斯消元)
下一篇: ZOJ 3329 One Person Game(概率dp 经典)
Interstellar_
博客等级 码龄10年 8粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值