VJ地址

题意:选择一段or两段连续的区间,合成一段序列,使得选择的序列中没有相同的数字,求序列最长的长度

思路:由于是区间内不能有相同的数字,所以考虑用尺取,可以2*n的时间枚举第一段的长度,然后剩下两边的区间,同样用尺取找到能选择的最大值,然后相加,做法挺暴力,不过数据小啊。

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define re register
#define lson rt<<1
#define rson rt<<1|1
#define lowbit(a) ((a)&-(a))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define fi first
#define rep(i,n) for(int i=0;(i)<(n);i++)
#define rep1(i,n) for(int i=1;(i)<=(n);i++)
#define se secondusing namespace std;
typedef long long  ll;
typedef unsigned long long  ull;
typedef pair<int,int > pii;
int dx[4]= {-1,1,0,0},dy[4]= {0,0,1,-1};
const ll mod=1e9+7;
const ll N =2e6+10;
const double eps = 1e-4;
const double pi=acos(-1);
ll gcd(int a,int b){return !b?a:gcd(b,a%b);}
int vis[N];
int cc;
int n;
int a[N];
int work(int L,int R){if(L>R) return 0;int l=L,r=L;int ans=0;while(r<=R||l<=R){while(!vis[a[r]]&&r<=R){vis[a[r++]]++;ans=max(ans,r-l);}if(l>=r&&vis[a[r]]) vis[a[r++]]++;vis[a[l]]--;l++;ans=max(ans,r-l);}return ans;
}
int main()
{iosint t;cin>>t;while(t--){FILL(vis,0);cin>>n;rep1(i,n){cin>>a[i];}int L=1,R=1;int ans=0;while(R<=n){while(!vis[a[R]]&&R<=n){vis[a[R++]]++;ans=max(ans,R-L+max(work(1,L-1),work(R,n)));}vis[a[L]]--;L++;ans=max(ans,R-L+max(work(1,L-1),work(R,n)));}printf("Case #%d: %d\n",++cc,ans);}return 0;
}

C - Mr. Panda and Strips Gym - 101194C(思维//尺取//2016 icpc china final)相关推荐

  1. Mr. Panda and Kakin(拓展欧几里得 + O(1)快速乘)

    Mr. Panda and Kakin 给定n,cn, cn,c,要我们找到nnn是两个相邻质数的乘积,要我们找到xxx,满足x230+3≡c(modn)x ^{2 ^{30} + 3} \equiv ...

  2. Gym - 101911B Glider【尺取】

    参考大佬的博客https://blog.csdn.net/mmk27_word/article/details/85063325?ops_request_misc=%257B%2522request% ...

  3. D.Digits 思维dp 取log乘积变成加法

    题目链接 题目大意: 就是给你nnn个数和一个数字ddd,问你从这n个数中挑出若干个数,使得这些数的乘积最后的一个数字是d,并且结果是最大的,问你要挑出哪些数字? n∈[1,1e5],ai∈[1,10 ...

  4. 【HDU - 6119】小小粉丝度度熊 (区间合并,尺取,思维)

    题干: 度度熊喜欢着喵哈哈村的大明星--星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是最重要的,最重要的是,星星小姐拍的一手好代码! ...

  5. 【Gym - 101608G】WiFi Password (区间或,线段树 或 按位处理+尺取 或 二分)

    题干: Just days before the JCPC, your internet service went down. You decided to continue your trainin ...

  6. 【蓝桥杯官网训练 - 历届试题】对局匹配(dp,思维,取模)

    题干: 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起.如果 ...

  7. 【EOJ Monthly 2019.02 - D】进制转换(思维,取模,高精度大数)

    题干: 单测试点时限: 2.0 秒 内存限制: 256 MB "他觉得一个人奋斗更轻松自在.跟没有干劲的人在一起厮混,只会徒增压力." QQ 小方决定一个人研究研究进制转换. 很快 ...

  8. A - Multiplication Dilemma (思维)( 2018 ACM ICPC Arabella Collegiate Programming Contest)

    滴答滴答---题目链接 Multiplication operation is not always easy! For example, it is hard to calculate 27 × 2 ...

  9. 2016-2017 ACM-ICPC CHINA-Final(EC-final) 题解(10 / 12)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2016-2017 ACM-ICPC CHINA-Final 比赛链接:https://codefor ...

最新文章

  1. SysTick定时器的一个简单应用
  2. AD域服务器卸载---WindowsServer2012R2
  3. 技术干货 | 基于 Qt Quick Plugin 快速构建桌面端跨平台组件
  4. 台式计算机序列号在哪,台式机如何查看序列号
  5. 打开windows 10系统语言设置的快捷方式
  6. 如何开发一个hexo主题_如何确定一个强烈的主题可以使产品开发更有效
  7. 状态机设计的一般步骤_浅谈状态机
  8. python各进制的表述与转换
  9. springcloud 熔断不生效_深入理解SpringCloud与微服务构建
  10. numpy 归一化_图卷积网络到底怎么做,这是一份极简的Numpy实现
  11. java死锁怎么用jvm调试_jvm 内存dump、gc查看、线程死锁,jmap、jstack、jstat
  12. JavaWeb 基础系列篇
  13. php讲一个正整数前补0,php 数字补零的两种的简单示例
  14. ora-01189故障解决办法
  15. Mysql主从架构的复制原理及配置详解
  16. 蓝牙音乐之AVRCP
  17. SHELLEXECUTEINFO 和 ShellExecuteEx的使用
  18. 频域采样与恢复matlab实验,实验二 时域采样与频域采样及MATLAB程序
  19. WebSocket网页聊天室
  20. MAVEN配置之SETTING配置

热门文章

  1. python进程join的用法_python 进程介绍 进程简单使用 join 验证空间隔离
  2. 中国的这些民居都是你没见过的!
  3. 排位重要还是媳妇儿重要?
  4. 有图有真相!这世界上,竟有人跟你长得一模一样!
  5. 数学和物理太难?这些动图让你秒懂抽象概念
  6. 有趣的灵魂连墓碑都很酷! | 今日趣图
  7. 每日一笑 | 在托运行李时,怎样才能不会因为超重被罚钱?
  8. 为什么技术与产品沟通起来总是那么痛苦
  9. 再生希尔伯特空间_向量、函数向量、再生核希尔伯特空间、核技巧
  10. 启动zookeeper_Giraph源码分析(一)—启动ZooKeeper服务