一些题目(4)

因为没多少时间所以挑几道最近做的有意思的题目写写。

在 N*M 的方格中选出三个记为 A, B, C,则费用为 |AB|+|BC|+|AC|.(|AB| 表示 AB 两点之间的曼哈顿距离。)求费用在区间 [minT, maxT] 内的选择方案数。N, M <= 4000。

我们可以考虑任意的三对坐标,$(x_1, y_1), (x_2, y_2), (x_3, y_3)$,如果我们淡化「点」的概念而只考虑坐标,假设 $x_1$ 是三个点的横坐标中最小的那个,$x_3$ 是最大的横坐标,$y_1$ 是最小的纵坐标,$y_3$ 是最大的纵坐标。其实很容易发现,$x_2$ 与 $y_2$ 对结果是没有影响的。则 $x_2$ 的取值范围是 $(x_1, x_3)$,$y_2$ 的取值范围是 $(y_1, y_3)$。而由三个横坐标和三个纵坐标可以确定出 $A_3^3$ 组三点对,所以对于一组 $x_1, y_1, x_3, y_3$,我们可以得到 $A_3^3 \cdot (x_3-x_1+1)(y_3-y_1+1)$ 组三点对。

但是如果直接枚举 $x_1, y_1, x_3, y_3$ 再判定是否合法显然不够快。在我们得到一组 $x_1, x_3, y_1, y_3$ 之后,由其构造出的三点对的费用为 $2(y_3-y_1)(x_3-x_1)$。从这个式子我们可以看出,某次选择的费用只与选择的三个点的「最大横坐标与最小横坐标之差」和「最大纵坐标与最小纵坐标之差」有关。那么我们直接枚举这两个差值即可。对于差值为 $delta$ 的一对 $x_1, x_3$,我们能够在所有方格中找到 $m - delta$ 组不同的 $x_1, x_3$。至此,问题解决。

顺便一提,上述所谓「枚举差值」的本质就是枚举「能够恰好包含三个点的最小矩形的长和宽」。

有两个人 A 和 B,初始分数都为 0。每次 A 可以选择任意一个任务做,一个难度为 $p$ 的任务,完成概率为 $\frac{1}{2^p}$,完成后可以得到 $2^{p-1}$ 分,没有完成则不得分;每次 B 只能选择难度为 1 的任务去做。求在最优决策下 A 获胜的概率是多少。

我们可以将 A 和 B 捆绑在一起分析,对于每一轮都可能有 4 种走向:A 完成了一个任务而 B 没有完成,A 没有完成而 B 完成了,A 完成了且 B 也完成了,A 和 B 都没有完成。设 $f(i, j)$ 为 A 当前得分 i 而 B 当前得分 j 时 A 获胜的概率,如果 A 选择了难度为 p 的任务,那么有

$f(i, j) = \frac{\frac{1}{2}\cdot \frac{1}{2^p} \cdot (f(i+2^{p-1}, j) + f(i+2^{p-1}, j+1)) +(1-\frac{1}{2^p})\cdot \frac{1}{2}\cdot f(i, j+1)+ (1-\frac{1}{2^p}) \cdot \frac{1}{2} \cdot f(i, j)}{4}$

(放大看更清楚哟~)

我们发现等式两边都出现了 $f(i, j)$,那么我们进行移项整理,就能得出 $f(i, j)$ 的计算式。(太长不打)

然后枚举 A 当前做的任务难度 $p$,取最大值即可。

时间: 2024-12-27 08:48:07

一些题目(4)的相关文章

四则运算题目生成程序

a.需求分析 看了大家对于本课程的目标和规划,很多同学都希望能提高自己的实践能力,没有捷径可走,就是练习.练习再练习!那么就从第一个个人项目开始吧,用一周的时间完成一个基于控制台的四则运算程序,实现一个自动生成小学四则运算题目的命令行程序 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 =

四则运算题目生成程序(基于控制台)

题目描述: 能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24 运算符为 +, ?, ×, ÷ 并且要求能处理用户的输入,并判断对错,打分统计正确率 要求能处理用户输入的真分数, 如 1/2, 5/12 等 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目 功能设计: 1.  通过随机数的生成,实现+, ?, ×, ÷的确定 2.  +, ?, ×, ÷分别赋予整

记一次坑die(误)的题目--HDU2553--(DFS)

,N皇后问题   Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 720 Accepted Submission(s): 417 Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N,求出有多少种合

九度oj 题目1552:座位问题

题目描述: 计算机学院的男生和女生共n个人要坐成一排玩游戏,因为计算机的女生都非常害羞,男生又很主动,所以活动的组织者要求在任何时候,一个女生的左边或者右边至少有一个女生,即每个女生均不会只与男生相邻.现在活动的组织者想知道,共有多少种可选的座位方案. 例如当n为4时,共有 女女女女, 女女女男, 男女女女, 女女男男, 男女女男, 男男女女, 男男男男7种. 输入: 输入包含多组测试用例,每组测试用例仅包含一个整数n(1<=n<=1000). 输出: 对于每组测试用例,输出一个数代表可选的方

201301 JAVA题目0-1级

题目描述 编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true:不满足时返回false. 输入描述: 第一行是数据个数,第二行是输入的数据 输出描述: 返回true或者false 输入例子: 4 1 5 -5 1 输出例子: true 1 import java.util.*; 2 3 public class Main46 { 4 public

九度oj 题目1499:项目安排

题目描述: 小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的.由于小明马上就要硕士毕业了,面临着买房.买车.给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包.万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项目才能保证赚钱最多(注意:做项目的时候,项目不能并行,即两个项目之间不能有时间重叠,但是一个项目刚结束,就可以立即做另一个项目,即项目起止时间点可以重叠). 输

题目1124:Digital Roots (方法超简单)

题目1124:Digital Roots 学到的新知识 求一个数各个的和可以把其%9就行,例如13%9=4 11%9=2:123%9=6: 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3819 解决:1335 题目描述: The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then

上机题目(初级)-高次方数的尾数(Java)

题目如下: 代码如下: package huawei; public final class Demo { /* 功能: 求解M的N次方的最后三位数(M,N均大于10) 输入参数: int M:M > 10 int N:N > 10 返回值: M的N次方的最后三位数 */ public static int getLast3DigitsOfMN(int M, int N) { int result = 1; for(int i = 0;i < N;++i){ result = (resu

算法学习 并查集(笔试题目:找同伙)

题目背景太长,记得不清楚,暂参考<啊哈算法>一书,根据笔试题目大意改编如下: 警察正要捉获某地区的犯罪团伙,由于强盗人数过大,想查清楚有几个团伙非常困难. 根据上级指示,需要首先尽快抓获强盗A所在的团伙,这需要掌握 1 所在团伙的人数.先有资料如下: 强盗1 和 强盗2 是同伙 强盗3 和 强盗4 是同伙 强盗2 和 强盗5 是同伙 强盗3 和 强盗2 是同伙 注意,强盗的同伙的同伙也是同伙,问  强盗1 的同伙(不包括1自己)有多少人? 该题形式化表示如下: 每个测试实例首先包括2个整数:N

题目1191:矩阵最大值

题目描述: 编写一个程序输入一个mXn的矩阵存储并输出,并且求出每行的最大值和每行的总和. 要求把每行总和放入每行最大值的位置,如果有多个最大值,取下标值最小的那一个作为最大值. 最后将结果矩阵输出. 输入: 输入的第一行包括两个整数m和n(1<=m,n<=100),分别代表矩阵的行和列的维数. 接下来的m行每行有n个数,代表矩阵的元素. 输出: 可能有多组测试数据,对于每组数据,输出按题目要求执行后的矩阵. 样例输入: 3 3 1 1 1 1 1 1 1 1 1 3 3 3 2 3 2 3