题意:有一个数组,每次可以修改子数组,但是修改后每个元素的位置都必须变化,求最少修改多少次使得这个数组有序. 题解:假如这个数组本来就有序,我们直接输出0.否则,对于数组两端,假如它们有序,那么我们可以不用做任何操作,直接看中间部分,所以我们分别扫一遍两端,分别找到两端第一个不满足条件的位置,然后我们遍历中间这个部分,如果没有任何一个位置的下标等于自己,那么操作数就是\(1\),如果有,我们就要先把它们打乱,然后再排序,所以操作数是\(2\). 代码: int t; int n; int a[N…
题目链接:https://codeforces.com/contest/1372/problem/C 题意 给出一个大小为 $n$ 的排列,每次操作可以选取一个连续子数组任意排列其中的元素,要求每个元素的位置必须与操作前不同,问将排列排为升序至少需要操作多少次. 题解 最多需要操作 $2$ 次,之后判断能否操作更少次即可. 如果已为升序,则不需要操作. 如果只有一个连续区间不为升序,如 $1,3,2,4,5$,只需要操作 $1$ 次. 否则需要操作 $2$ 次. 证明 第一次:选取整个数组,将所…
题目链接:https://codeforces.com/contest/1372/problem/B 题意 给出一个正整数 $n$,找到两个正整数 $a,b$ 满足 $a+b = n$ 且 $LCM(a,b)$ 最小. 题解 $a$ 或 $b$ 中一定有 $n$ 的因子,枚举即可. 证明 若 $a,b$ 都不是 $n$ 的因子,则 $a,b,n$ 两两互素,$LCM(a,b) = a \times b$,当 $a = 1, b = n - 1$ 时,$LMC(a,b) = n - 1 < n$,…
题目链接:https://codeforces.com/contest/1372/problem/D 题意 给出奇数个数围成的环,每次可以将一个数替换为相邻两个数的和并删除相邻的两个数,问最后余下的数的最大值. 题解 即从 $n$ 个数中选取 $\frac{n+1}{2}$ 个数,且这些数中最多有一对数相邻的和的最大值. 代码 #include <bits/stdc++.h> using ll = long long; using namespace std; int main() { int…
题目链接:https://codeforces.com/contest/1372/problem/A 题意 构造一个大小为 $n$ 的数组 $a$,要求满足 $1 \le a_i \le n$,且不存在 $a_x + a_y \neq a_z$ . 题解 最好想的就是全部构造成相等的元素. 代码 #include <bits/stdc++.h> using namespace std; void solve() { int n; cin >> n; for (int i = 0;…
题意:给你一个正整数\(n\),求两个正整数\(a\)和\(b\),使得\(a+b=n\),并且\(LCM(a,b)\)要尽可能的小. 题解:首先对于偶数,构造\(\frac{n}{2}\)和\(\frac{n}{2}\)一定是最优解,对于奇数,我们去找除它本身的最大因子\(a\),为什么呢? ​ 我们假设\(a\)是\(n\)的一个真因子,那么\(a\)能整除\(n\),则\(a\)也一定能整除\(n-a\),那么它们的\(lcm(a,n-a)=n-a\),所以我们要让\(n-a\)尽可能小,…
题意:构造一个长度为\(n\)的序列,要求所有元素总和不大于\(1000\),并且任意两项的和不等于另外一项. 题解:全构造\(1\)就好了. 代码: int t; int n; int main() { ios::sync_with_stdio(false);cin.tie(0); cin>>t; while(t--){ cin>>n; for(int i=1;i<=n;++i){ cout<<1<<" "; } cout<…
Codeforces Round #521 (Div. 3)  E. Thematic Contests 题目传送门 题意: 现在有n个题目,每种题目有自己的类型要举办一次考试,考试的原则是每天只有一种题目类型一种题目类型只能出现在一天每天的题目类型不能相同,而且后一天的题目数量必须正好为前一天的两倍,第一天的题目数量是任意的求怎么安排能使题目尽量多.注意:不是天数尽量多 思路: 首先我们知道一件事,题目属于哪种类型并不重要,重要的是每种类型的个数所以我们先统计出所有类型的个数,存进一个数组,而…
https://codeforces.com/contest/1139/problem/F 题意 有m个人,n道菜,每道菜有\(p_i\),\(s_i\),\(b_i\),每个人有\(inc_j\),\(pref_j\),一个人可以买一道菜的条件是 1. \(p_i \leq inc_j \leq s_i\) 2. \(|b_i - pref_j| \leq inc_j-p_i\) ,问每个人分别能买多少道菜 题解 转化一下公式 \(p_i \leq inc_j \leq s_i\) 下面两个满…
传送门 D. Arthur and Walls time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Finally it is a day when Arthur has enough money for buying an apartment. He found a great option close to the cente…