这些题目摘录于洛谷,好题,典型的题,考察各类算法运用,可用于蓝桥杯及各类算法比赛备战。锻炼解题思路,从学会算法模板后,会分析,用到具体的题目上。
本期涉及算法:数学(可取模的快速幂),构造(图),01 背包(问题转化),贪心算法,dfs 暴搜 + 剪枝,模拟 + 小根堆维护最小值。
题目清单
1.转圈游戏
题目: P1965 [NOIP 2013 提高组] 转圈游戏
解法:数学 + 快速幂
n 个数一圈(循环),计算 (x + m * 10^k) % n 的值即为移动后的位置。
由于 0 < k < 10^9,就是 10(10^9),非常的大,需要用到可以取模的快速幂,一边乘一边取模。用 long long 来存。
代码:
#include <iostream>
using namespace std;
typedef long long LL;
LL n, m, k, x;
LL qpow(LL a, LL b, LL p) {
LL ret = 1;
while (b) {
if (b & 1) ret = ret * a % p;
b >>= 1;
a = a * a % p;
}
ret;
}
{
cin >> n >> m >> k >> x;
cout << (x + m * (, k, n)) % n << endl;
;
}



