给定你个数组,以及一些单点修改,以及询问,每次询问需要求得,最长的字串长度,它在其他位置存在同构。

当存在两个不相交的区间同构时,如:

1、2、……、n -1、n、n + 1、……、m、m + 1、m + 2、 ……、m + n - 1、m + n;(假设m > n&&[1, n]和[m + 1, m + n]同构)

那么 K = n 显然是存在的。但是这不是最大的K,因为[1, m]和[n + 1, n + m]也一定同构(使两边同时加上一个相同区间)

所以这题可以简化为找到一个区间首尾元素相同,求最大区间长度;

Accepted 4089 C++11 1200 23516
  1. #include "bits/stdc++.h"
  2. using namespace std;
  3. typedef long long LL;
  4. typedef pair<int, int> PII;
  5. const int INF = 0x3f3f3f3f;
  6. const int MAXN = 1e5 + ;
  7. map<int, set<int> > mp;
  8. multiset<int> ans;
  9. int arr[MAXN];
  10. int main() {
  11. int t, n, m;
  12. scanf("%d", &t);
  13. while (t--) {
  14. mp.clear();
  15. ans.clear();
  16. scanf("%d%d", &n, &m);
  17. for (int i = ; i <= n; i++) {
  18. scanf("%d", &arr[i]);
  19. mp[arr[i]].insert(i);
  20. }
  21. for (auto i : mp) {
  22. ans.insert(*(--i.second.end()) - *i.second.begin());
  23. }
  24. int op, x, y;
  25. while (m--) {
  26. scanf("%d", &op);
  27. if (op == ) {
  28. if (*(--ans.end()) == ) {
  29. puts("-1");
  30. } else {
  31. printf("%d\n", *(--ans.end()));
  32. }
  33. } else {
  34. scanf("%d%d", &x, &y);
  35. auto it = ans.find(*(--mp[arr[x]].end()) - *mp[arr[x]].begin());
  36. ans.erase(it);
  37. mp[arr[x]].erase(x);
  38. if (!mp[arr[x]].empty()) {
  39. ans.insert(*(--mp[arr[x]].end()) - *mp[arr[x]].begin());
  40. }
  41.  
  42. if (!mp[y].empty()) {
  43. it = ans.find(*(--mp[y].end()) - *mp[y].begin());
  44. ans.erase(it);
  45. }
  46. arr[x] = y;
  47. mp[y].insert(x);
  48. ans.insert(*(--mp[y].end()) - *mp[y].begin());
  49. }
  50. }
  51. }
  52. return ;
  53. }

可能表述不是很清楚,这题参考了一下https://www.cnblogs.com/hua-dong/p/10293407.html这位大佬的博客;

ZOJ-4089-Little Sub and Isomorphism Sequences的更多相关文章

  1. ZOJ - 4089 :Little Sub and Isomorphism Sequences (同构 set)

    Little Sub has a sequence . Now he has a problem for you. Two sequences of length and of length are ...

  2. Little Sub and Isomorphism Sequences ZOJ - 4089

    ZOJ - 4089 思路:可以反正 最长重构序列必然符合  此模式 x  +  {   }  与  {   }  +  x 那么 题意转化为了  找两个距离最长的相同的数.eeee 先离散化 然后 ...

  3. ZOJ Monthly, January 2019 Little Sub and Isomorphism Sequences 【离线离散化 + set + multiset】

    传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5868 Little Sub and Isomorphism Seque ...

  4. ZOJ Monthly, January 2019 I Little Sub and Isomorphism Sequences(set 妙用) ZOJ4089

    写这篇博客来证明自己的愚蠢 ...Orz  飞机 题意:给定你个数组,以及一些单点修改,以及询问,每次询问需要求得,最长的字串长度,它在其他位置存在同构 题解:经过一些奇思妙想后 ,你可以发现问题是传 ...

  5. ZOJ Monthly, January 2019

    A: Little Sub and Pascal's Triangle Solved. 题意: 求杨辉三角第n行奇数个数 思路: 薛聚聚说找规律,16说Lucas 答案是 $2^p \;\;p 为 n ...

  6. ZOJ Problem Set - 1338 Up and Down Sequences 解释 ac代码

    这道题目我一开始一头雾水,怎么都数不对,参考了下网上的博文,才弄懂. 题意是这样的,如果是上升序列,上升序列的长度不是所有上升数字的,是这么规定的,如果它与前一个数字构成上升,那么这个数字算上长度.所 ...

  7. ZOJ 3861 - Valid Pattern Lock

    3861 - Valid Pattern Lock Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & ...

  8. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  9. ZOJ 3233 Lucky Number

    Lucky Number Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Original I ...

随机推荐

  1. 统计_statistics_不同的人_大样本_分析_统计方法_useful ?

    统计_statistics_不同的人_大样本_分析_

  2. php empty,isset,is_null判断比较(差异与异同)

    php empty,isset,is_null判断比较(差异与异同) 作者: 字体:[增加 减小] 类型:转载 做php开发时候,想必在使用:empty,isset,is_null 这几个函数时候,遇 ...

  3. 微信获得access_token

    <?php //获取access_token $appid = 'wx47a6fc3c1187e60d'; //测试账号appid $appsecret = '525f76d57c7bd7200 ...

  4. 03 Mybatis:01.Mybatis课程介绍及环境搭建&&02.Mybatis入门案例

    mybatis框架共四天第一天:mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 -------------------------------------- ...

  5. Postgresql的导表

    背景 前面已经介绍了常用的备份与恢复了,接下来介绍一下导表. 正文 很多情况,会有把数据导出的需求,轻重缓急总会有特别紧急的情况,但是又不是专业干db的人,还是记录下来,以防不时之需. 针对于导表,个 ...

  6. Insulator|enhancer|LCR|EKLF|CTCF|调控基因印记| A-USF|HATs|ChIP|Chip-seq|PAGE|

    表观遗传学 转录因子 基本转录因子:TFIID.A.B.F.E.H. Pol II… 基转录因子具有稳定作用 组织特异性转录因子:GATA.EKLF.Bcl11A… 特异性是在特定组织中的细胞中时与细 ...

  7. python基础,if判断

    一.计算机基础知识: 1.计算机基本组成:主板+CPU+内存 (CPU:主频,核数(16)   内存:大小,型号,主频   显卡:显存,位宽) 2.计算机最低层:电子电路,只能识别0和1. 二.pyt ...

  8. 关于Vue.js的认识(第一部分)[转载]

    一.关于v-bind 1.初识v-bind (1).加冒号的是 vue 的 v-bind 语法糖(指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用),绑定vue的一个 ...

  9. KeyError: 'xxx does not support field: _id'

    Scrapy存储爬取的数据时,提示不支持某些字段 在Item文件中,添加对应的字段即可

  10. mysql数据库死锁的解决方案

    1. 查询锁表信息    show OPEN TABLES where In_use > 0;2. 查看当前数据库锁表的情况    SELECT * FROM information_schem ...