X游戏
题目
我们称一个数 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 不同的数。要求每位数字都要被旋转。
如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。, , 和 被旋转后仍然是它们自己; 和 可以互相旋转成对方; 和 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。
现在我们有一个正整数 , 计算从 1 到 中有多少个数 是好数/p>
输入描述:
输入正整数
输出描述:
输出1到中好数个数
样例:
解析
数据不大的时候模拟就行了;
数据很大的时候就要数位DP了,这里就不细说了。
跳格子游戏
题目
假设你正在玩跳格子(所有格子排成一个纵列)游戏。需要 跳完 个格子你才能抵达终点。
每次你可以跳 或 个格子。你有多少种不同的方法可以到达终点呢br> 注意:给定是一个正整数。
输入描述:
格子数
输出描述:
跳完个格子到达终点的方法
样例:
解析
斐波拉契数列;
数据很大的时候要用矩阵快速幂加速,详情见深入浅出矩阵快速幂及其简单应用。
糖果分配
题目
假设你是一位很有爱的幼儿园老师,想要给幼儿园的小朋友们一些小糖果。但是,每个孩子最多只能给一块糖果。对每个孩子,都有一个胃口值 ,这是能让孩子们满足胃口的糖果的最小尺寸;并且每块糖果,都有一个尺寸。如果 ,我们可以将这个糖果分配给孩子,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。
注意:
你可以假设胃口值为正。
一个小朋友最多只能拥有一块糖果。
输入描述:
第一行输入每个孩子的胃口值
第二行输入每个糖果的尺寸
孩子数和糖果数不超过
输出描述:
能满足孩子数量的最大值
样例:
解析
贪心,尽量让每个孩子得到刚好合适的糖果。
K点游戏
题目
小招喵某日闲来无事,想验一下自己的人品,于是给自己定了一个游戏规则:
这个游戏有三个因素:
游戏开始的时候小招喵有点,之后如果发现自己手上的点不足点,就随机从到的整数中抽取一个(包含和),抽到哪个数字的概率都是相同的。
重复上述过程,直到小招喵获得了或者大于点,就停止获取新的点,这时候小招喵手上的点小于等于的概率是多少/p>
输入描述:
输入为3个整数,分别对应,中间用空格隔开
其中,
输出描述:
输出为概率值,保留5位小数
样例:
解析
枚举最后一次取之前已经取了多少点,然后看看还要取多少点能满足并且就行了。
最后一次取了点的概率可以用记忆化搜索弄出来。
这题比较坑的地方在于保留5位小数,像代码中特殊处理一下才能过这个题。
#include double dfs(int sum, int w, std::vectordouble> & dp){ if ((int)dp[sum] + 1)return dp[sum]; double ret = 0; for (int i = 1; i w && i sum; ++i) {double s = dfs(sum - i, w, dp) / w;ret += s; } return dp[sum] = ret;}int main(){ for (int n, k, w; std::cin >> n >> k >> w; ) {double ans = 0;std::vectordouble> dp(k + 1, -1);dp[0] = 1;for (int pre = 0; pre k; ++pre) { if (k - pre > w) 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!