#6808. L1-7 超算的力量

L1-7 超算的力量

题目背景 (嫌长可以不看)

时间退回到一周前,在2023年“中国高校计算机大赛▪团体程序设计天梯赛”赛前宣讲会上。邓老师介绍了两位参加ACM-IPCC大赛的学长,也是以前参加过天梯赛的学长,一位选择了就业,未来将继续在高性能计算(也就是超算)的路上探索。而另一位,选择了深造,就是本题的出题人,正在苦逼地研究机器学习的算法。听完宣讲后,大家顿时觉得参加学科竞赛,特别是高等级的学科竞赛,不仅可以从中学到相当多有用的知识,同时还中从中得到力量,使自己拥有一个美好的未来。当然,要参加上面提到的国际级别的超算比赛,首先得先过天梯赛这一关哦,特别是数据结构与算法。这个题目呢,学长就想带领大家感受一波超算的力量的同时帮助大家通过天梯赛的考验(hia~hia~)。

题目描述 (嫌长可以只看加粗的)

机器学习是高性能计算密不可分的一个部分。机器学习的算法大致可分为有监督学习和无监督学习两种。支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的学习算法就是求解凸二次规划的最优化算法。 支持向量机的关键术语是支持向量和间隔,其官方解释如下: image 支持向量是指所选择的超平面方程,而间隔则是指与支持向量之间的距离。

通俗一点来说,下图展示的是4*4的二维数组空间,指定了超平面方程为下图中绿色所示的一条直线,给定的阈值是1,便是指与这条绿色的直线平行且与这条直线距离小于等于1的所有直线,即橙色的部分。 image

学长学习的第一种分类算法便是支持向量机算法。为了更好地理解支持向量机算法,学长想完成相关的实验。现在学长拥有一个二维数组空间,假设这个二维数组存满了元素,在其中选定一条直线(超平面方程)并给出阈值,你能帮助学长寻找到在每条直线(超平面)的阈值内的元素有多少个吗?

输入格式

第1行输入n,m。表示二维数组平面的大小,从(1,1)到(n,m).

第2行输入三个数字,首先给定一个中心点(i,j),之后给出一个方向。表示出超平面。(方向用1~4表示,具体方法见下图)

第3行输出一个数,表示阈值的大小

image

输出格式

输出在该超平面阈值内元素的个数

样例1

4 4
2 3 4
1
10

样例解释1,见上面的图。绿色和橙色范围内共有10个元素

样例2

3 3
2 2 1
1
9

image
样例解释2 :如图,3*3的矩阵,选择了(2,2)作为中心点,类别是1,选定的超平面直线是绿色的这一条,阈值为1,则是橙色部分与他距离小于等于1的两条直线,绿色和橙色部分,即阈值内的元素为9个

样例3

4 5
1 1 2
2
15

限制条件及约定

时间限制:1s 空间限制:1024KiB
对于50%的数据,1≤n,m,k≤1000
对于100%的数据,1≤n,m,k≤100000