这里会显示出您选择的修订版和当前版本之间的差别。
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> |