CF1119A Ilya and a Colorful Walk 题解】的更多相关文章

Content 有一个长度为 \(n\) 的数组 \(a_1,a_2,a_3,...,a_n\),试求出两个不相等的数之间的距离的最大值. 数据范围:\(3\leqslant n\leqslant 3\times 10^5,1\leqslant a_i\leqslant n\). Solution 弄两个指针 \(l,r\),一开始将它们分别定为 \(1,n\),然后分两次操作,第一次只将 \(l\) 向右移,第二次只将 \(r\) 向左移,直到 \(a_l\neq a_r\) 为止,然后再求出…
题目地址:CF1119A Ilya and a Colorful Walk \(O(n^2)\) 肯定过不掉 记 \(p_i\) 为从下标 \(1\) 开始连续出现 \(i\) 的个数 那么对于每一个 \(i\) ,在 \(i\) 之前离 \(i\) 最远的与 \(a_i\) 不同的数的距离显然为 \(i-p_{a_i}-1\) . 取 \(max\) 就好了 #include <bits/stdc++.h> using namespace std; const int N = 3e5 + 6…
此题就是:给你一个数组,让你找出两个不同的元素,并让它们的下标差距最大. 思路:从2到n,如果与1不同,记录距离,与原数比较,取大. 从1到n-1,如果与n不同,记录距离,与原数比较,取大. AC代码(你们最想要的) #include<bits/stdc++.h> using namespace std; int main(){ int n,a[300010],i,ans=0; cin>>n; for(i=1;i<=n;i++)cin>>a[i];//输入 for…
Google Kick Start 2019 C轮 第一题 Wiggle Walk 题解 题目地址:https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050ff2/0000000000150aac 四个解法: 暴力模拟 使用HashMap优化,理论时间复杂度最小(好像也是并查集) (推荐)使用BitSet,实际占用空间特别小,仅仅是 2mn 个比特大小 使用HashMap实现的并查集方法,在东南西北4个方向上用…
前言 学长博客划水,抄题解,差评. 于是我来重新写一篇正常的题解,虽然解法跟标程不一样,但是复杂度是一样的. 题面 题目描述 在比特镇一共有\(n\)个街区,编号依次为\(1\)到\(n\),它们之间通过若干条单向道路连接. 比特镇的交通系统极具特色,除了\(m\)条单向道路之外,每个街区还有一个编码\(val_i\), 不同街区可能拥有相同的编码.如果\(val_i\ and\ val_j = val_j\)(博主注:and这里指位与,即C++中的&), 即\(val_i\)在二进制下与\(v…
题面 官方题解 模拟赛题解 题解概述: 定义符号A~B表示序列A是序列B的子序列,A!~B反之. 设操作序列为I,则有A~I,B!~I,C~I,D!~I. 可得出条件①B!~C且D!~A,所以我们只要讨论满足这个条件的情况. 分情况讨论: c1=c2,则可以进行操作c1,得到的状态仍满足条件①: c1!=c2,且B'!~C,此时可以进行操作c1: c1!=c2,且D'!~A,此时可以进行操作c2: c1!=c2,且D'~A,B'~C,此时无法进行操作,此情况无解: 我们还发现第4种情况下,B=.…
Content 有一个长度为 \(n\) 的数组 \(a_1,a_2,a_3,...,a_n\),并已知有 \(k\) 个不相同的元素求最长连续的一段区间,使得这里面的元素互不相同. 数据范围:\(1\leqslant n\leqslant 10^5,1\leqslant a_i\leqslant k\leqslant 10^5\). Solution 我们可以直接记录当前的元素是否和前面的不同,不同答案加 \(1\),否则取最大值之后回到初始值. 注意,初始值为 \(1\),因为一开始有 \(…
CF1119A Ilya and a Colorful Walk 这题二分是假的.. \(1,2,1,2,1\) 有间隔为 \(3\) 的,但没有间隔为 \(2\) 的.开始被 \(hack\) 了一次.后来改过来了. 我的做法:扫一遍,记录每个颜色第一次出现的位置,并存入一个 \(set\) 中,若当前颜色未出现,就更新位置,存入 \(set\) ,否则将那个位置删除.然后查询一次 \(set\) 中最小元素.最后再把那个位置插入回去. 官方题解:最远距离两个端点中一定包含 \(1\) 或 \…
Codeforces Global Round 2 题目链接:https://codeforces.com/contest/1119 A. Ilya and a Colorful Walk 题意: 给出n个数,问从一个数到另外一个不同数的最长距离是多少. 题解: 从前往后,从后往前扫两遍即可.证明可用反证法,这里略去. #include <bits/stdc++.h> using namespace std; typedef long long ll; ; int n; int c[N]; i…
传送门 好难受啊掉\(rating\)了-- \(A\ Ilya\ and\ a\ Colorful\ Walk\) 找到最后一个与第一个颜色不同的,比一下距离,然后再找到最左边和最右边与第一个颜色不同的,再和所有与第一个颜色相同的比较一下距离 //minamoto #include<bits/stdc++.h> #define R register #define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i) #define fd(i,a,b)…