这里会显示出您选择的修订版和当前版本之间的差别。
|
2020-2021:teams:too_low:cf665cy [2020/07/17 17:07] member 创建 |
2020-2021:teams:too_low:cf665cy [2020/07/17 17:13] (当前版本) member |
||
|---|---|---|---|
| 行 4: | 行 4: | ||
| 水题,吓唬人的。 | 水题,吓唬人的。 | ||
| + | <hidden> | ||
| <code cpp> | <code cpp> | ||
| #include<iostream> | #include<iostream> | ||
| 行 25: | 行 25: | ||
| } | } | ||
| </code> | </code> | ||
| + | </hidden> | ||
| ===== B ===== | ===== B ===== | ||
| 行 31: | 行 31: | ||
| **思路**:找出 n 的大于 1 的最小因子 k,a = n/k,b = n - n/k。不会证明,感觉是对的。 | **思路**:找出 n 的大于 1 的最小因子 k,a = n/k,b = n - n/k。不会证明,感觉是对的。 | ||
| + | <hidden> | ||
| <code cpp> | <code cpp> | ||
| #include<iostream> | #include<iostream> | ||
| 行 62: | 行 62: | ||
| } | } | ||
| </code> | </code> | ||
| + | </hidden> | ||
| ===== C ===== | ===== C ===== | ||
| 行 67: | 行 68: | ||
| **题解**:显然,情况1:如果a本来就单调增,则为0次。情况2:如果没有一个数字在对应位置上,则为1次。情况3:在其他情况下,总能找到一个方法,对全部的区间重排,使得每个数字都不在自己原本的位置上并且不是最终要求的位置,这样就能转化为情况2,所以答案为2。 | **题解**:显然,情况1:如果a本来就单调增,则为0次。情况2:如果没有一个数字在对应位置上,则为1次。情况3:在其他情况下,总能找到一个方法,对全部的区间重排,使得每个数字都不在自己原本的位置上并且不是最终要求的位置,这样就能转化为情况2,所以答案为2。 | ||
| + | <hidden> | ||
| <code cpp> | <code cpp> | ||
| #include<iostream> | #include<iostream> | ||
| 行 123: | 行 124: | ||
| } | } | ||
| </code> | </code> | ||
| + | </hidden> | ||
| ===== D ===== | ===== D ===== | ||
| 行 128: | 行 130: | ||
| **题解**:一开始想区间dp,发现数据太大搞不了,又想优先队列贪心,后面又发现不太对。实际上,如果我进行了一次操作,得到了一个新数字a,那么我的下一次操作就最好不要选择与a相邻的数,因为这样的话,实际上相当于在原来的环上删掉了2个数字(因为a是原本环上两个数字 的和),按照这个思路贪心即可。实现的话,直接拆环就行。 | **题解**:一开始想区间dp,发现数据太大搞不了,又想优先队列贪心,后面又发现不太对。实际上,如果我进行了一次操作,得到了一个新数字a,那么我的下一次操作就最好不要选择与a相邻的数,因为这样的话,实际上相当于在原来的环上删掉了2个数字(因为a是原本环上两个数字 的和),按照这个思路贪心即可。实现的话,直接拆环就行。 | ||
| + | <hidden> | ||
| <code cpp> | <code cpp> | ||
| #include <cstdio> | #include <cstdio> | ||
| 行 162: | 行 164: | ||
| } | } | ||
| </code> | </code> | ||
| + | </hidden> | ||