题目链接:https://codeforces.com/contest/1385/problem/B 题意 有两个大小为 $n$ 的相同的排列,每次从二者或二者之一的首部取元素排入新的数组,给出这个大小为 $2n$ 的数组,找到原先的排列. 题解 忽略所有第二次出现的数即可. 代码 #include <bits/stdc++.h> using namespace std; void solve() { int n; cin >> n; map<int, bool> vi…
题意:有两个完全相同的排列,将其中一个的元素按相对顺序插入另外一个排列中,给你操作完的排列,求原排列. 题解:感觉看看样例就能直接写了啊,直接遍历,用桶存数字个数,如果桶为空,直接输出即可. 代码: int t; int n; vector<int> v; map<int,int> mp; int main() { ios::sync_with_stdio(false);cin.tie(0); cin>>t; while(t--){ cin>>n; mp.c…
题目大意 一个含有 n 个顶点的无向图,顶点编号为 1~n.给出一个距离数组:d[i] 表示顶点 i 距离图中某个定点的最短距离.这个图有个限制:每个点的度不能超过 k 现在,请构造一个这样的无向图,要求不能有自环,重边,且满足距离数组和度数限制,输出图中的边:如果无解,输出 -1 数据规模:1 ≤ k <  n ≤ 105,0 ≤ d[i] < n 做法分析 第一眼做法:SPFA 或者 BFS,想了想,还是乱搞 根据 d 数组直接构造这个图,因为最短路具有最优子结构,所以,d[i] 为 0…
F. Restore a Number   Vasya decided to pass a very large integer n to Kate. First, he wrote that number as a string, then he appended to the right integer k — the number of digits in n. Magically, all the numbers were shuffled in arbitrary order whil…
http://codeforces.com/contest/465/problem/D 给定8个点坐标,对于每个点来说,可以随意交换x,y,z坐标的数值.问说8个点是否可以组成立方体. 暴力枚举即可,注意检查立方体姿势不对会T 如果8个点形成一个立方体是这样的:找到所有点对之间的最小距离,应等于边的长度L.每个顶点应该正好有三个点距离它为L,而且构成的三个边应两两垂直.如果这些条件都满足在每一点上,那么一定只能是立方体.检查复杂度约O(8^2). #include <cstdio> #incl…
http://codeforces.com/contest/465/problem/D 给定8个点坐标.对于每一个点来说,能够任意交换x.y,z坐标的数值. 问说8个点能否够组成立方体. 暴力枚举就可以,注意检查立方体姿势不正确会T 假设8个点形成一个立方体是这种:找到全部点对之间的最小距离,应等于边的长度L.每一个顶点应该正好有三个点距离它为L.并且构成的三个边应两两垂直.假设这些条件都满足在每一点上.那么一定仅仅能是立方体.检查复杂度约O(8^2). #include <cstdio> #…
题目链接:https://codeforces.com/contest/1385/problem/D 题意 一个小写字母串称为 $c-good\ string$,如果至少满足以下条件之一: 字符串长度为 $1$,包含字母 $c$ 字符串前一半都为字母 $c$,后一半为 $(c+1)-good\ string$ 字符串后一半都为字母 $c$,前一半为 $(c+1)-good\ string$ 计算将一个长为 $n = 2^k$ 的小写字母串变为 $a-good\ string$ 至少需要替换多少个…
题目链接:https://codeforces.com/contest/1385/problem/C 题意 去除一个数组的最短前缀使得余下的数组每次从首或尾部取元素可以排为非减序. 题解一 当两个大数夹着一个小数那么第一个大数及其之前的数必须要去掉,比如 $1,1,2,1,2$,要去除的前缀长为 $3$,但是考虑到也会有 $1,1,2,1,1,2$ 的情况,所以可以将原数组去重后判断每三个相邻的元素. 代码 #include <bits/stdc++.h> using namespace st…
题目链接:https://codeforces.com/contest/1385/problem/A 题意 给出三个正整数 $x,y,z$,找出三个正整数 $a,b,c$ 使得 $x = max(a, b), y = max(a, c), z = max(b, c)$ . 题解 假设有 $a \le b \le c$ 满足条件,那么 $x,y,z$ 中一定会有两个 $c$,一个 $b$,$a$ 的范围为 $[1,b]$ . 代码 #include <bits/stdc++.h> using n…
A. Three Pairwise Maximums #构造 题目链接 题意 给定三个正整数\(x,y,z\),要求找出正整数\(a,b,c\),满足\(x=max(a,b), y=max(a,c),z=max(b,c)\) 分析 我们可以先将\(x,y,z\)降序排序得到\(z\leq y\leq x\).由于\(x\)是\(a,b,c\)三者最值,且通过三个关系中\(x\)所代表的数字一定出现两次,可以推断出,\(y=x\),如果最值没有出现两次,说明我们不可能构造出\(a,b,c\). 既…