C - Mr. Panda and Strips Gym - 101194C(思维//尺取//2016 icpc china final)
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)相关推荐
- 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 ...
- Gym - 101911B Glider【尺取】
参考大佬的博客https://blog.csdn.net/mmk27_word/article/details/85063325?ops_request_misc=%257B%2522request% ...
- D.Digits 思维dp 取log乘积变成加法
题目链接 题目大意: 就是给你nnn个数和一个数字ddd,问你从这n个数中挑出若干个数,使得这些数的乘积最后的一个数字是d,并且结果是最大的,问你要挑出哪些数字? n∈[1,1e5],ai∈[1,10 ...
- 【HDU - 6119】小小粉丝度度熊 (区间合并,尺取,思维)
题干: 度度熊喜欢着喵哈哈村的大明星--星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是最重要的,最重要的是,星星小姐拍的一手好代码! ...
- 【Gym - 101608G】WiFi Password (区间或,线段树 或 按位处理+尺取 或 二分)
题干: Just days before the JCPC, your internet service went down. You decided to continue your trainin ...
- 【蓝桥杯官网训练 - 历届试题】对局匹配(dp,思维,取模)
题干: 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起.如果 ...
- 【EOJ Monthly 2019.02 - D】进制转换(思维,取模,高精度大数)
题干: 单测试点时限: 2.0 秒 内存限制: 256 MB "他觉得一个人奋斗更轻松自在.跟没有干劲的人在一起厮混,只会徒增压力." QQ 小方决定一个人研究研究进制转换. 很快 ...
- 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 ...
- 2016-2017 ACM-ICPC CHINA-Final(EC-final) 题解(10 / 12)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2016-2017 ACM-ICPC CHINA-Final 比赛链接:https://codefor ...
最新文章
- SysTick定时器的一个简单应用
- AD域服务器卸载---WindowsServer2012R2
- 技术干货 | 基于 Qt Quick Plugin 快速构建桌面端跨平台组件
- 台式计算机序列号在哪,台式机如何查看序列号
- 打开windows 10系统语言设置的快捷方式
- 如何开发一个hexo主题_如何确定一个强烈的主题可以使产品开发更有效
- 状态机设计的一般步骤_浅谈状态机
- python各进制的表述与转换
- springcloud 熔断不生效_深入理解SpringCloud与微服务构建
- numpy 归一化_图卷积网络到底怎么做,这是一份极简的Numpy实现
- java死锁怎么用jvm调试_jvm 内存dump、gc查看、线程死锁,jmap、jstack、jstat
- JavaWeb 基础系列篇
- php讲一个正整数前补0,php 数字补零的两种的简单示例
- ora-01189故障解决办法
- Mysql主从架构的复制原理及配置详解
- 蓝牙音乐之AVRCP
- SHELLEXECUTEINFO 和 ShellExecuteEx的使用
- 频域采样与恢复matlab实验,实验二 时域采样与频域采样及MATLAB程序
- WebSocket网页聊天室
- MAVEN配置之SETTING配置