数学算法总结(面积、博弈)

简介: 数学算法总结(面积、博弈)

1、求多边形的面积:

(1)已知顶点坐标:

公式:s=0.5*abs((x1 * y2-x2 *y1)+(x2 *y3-x3 *y2)+、、、+(xn-1 *yn-xn *yn-1))

这个公式不管是凹凸边形或者规则的,不过如果是顺时针输入点就是负的,逆时针就是正的。

例题:http://acm.hdu.edu.cn/showproblem.php?pid=2036`

#include<stdio.h>
double a[106][2];
int main()
{
  int n;
  while(scanf("%d",&n),n!=0)
  {
    for(int i=0;i<n;i++)
      scanf("%lf%lf",&a[i][0],&a[i][1]);  
     a[n][0]=a[0][0];
     a[n][1]=a[0][1];
     double sum=0;
     for(int i=0;i<n;i++)
     sum+=(a[i][0]*a[i+1][1]-a[i+1][0]*a[i][1]);
     sum=sum/2;
     printf("%.1lf\n",sum);
  }
  return 0;
} 

2、博弈算法:

(1) 巴什博奕:只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为胜。

代码:

#include<stdio.h>
int main()
{
  int n,m;
  while(~scanf("%d%d",&n,&m))
  {
    if(n%(m+1)==0)
      printf("后手胜\n");
    else
      printf("先手胜\n");
  }
  return 0;
}

(2) 威佐夫博弈:有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者胜利。若两堆物品的初始值为(x,y),且x<y,则另z=y-x;记w=(int)[((sqrt(5)+1)/2)*z ];若w=x,则先手必败,否则先手必胜。

代码:

#include<stdio.h>
#include<math.h>
int main()
{
  int n,m,k,t,a;
  while(scanf("%d%d",&n,&m)!=EOF){
    if(n<m){
      a=m;
      m=n;
      n=a;
    }
    k=n-m;
    t=(int)(((sqrt(5)+1)/2)*k);
    if(t==m)
      printf("0\n");
    else
      printf("1\n");
  }
  return 0;
} 

(3)尼姆博弈:有任意堆物品,每堆物品的个数是任意的,双方轮流从中取物品,每一次只能从一堆物品中取部分或全部物品,最少取一件,取到最后一件物品的人获胜。

结论:把每堆物品数全部异或起来,如果得到的值为0,那么先手必败,否则先手必胜。

代码:

#include<stdio.h>
int main()
{
  int n,m,k,temp,i;
  while(scanf("%d",&k)!=EOF){
    temp=0;
    for(i=1;i<=k;i++){
      scanf("%d",&n);
      temp^=n;
    }
    if(temp==0)
      printf("No\n");
    else
      printf("Yes\n"); 
  }
  return 0;
}
相关文章
|
存储 安全 算法
|
算法 测试技术 C++
【动态规划】【数学】【C++算法】1449. 数位成本和为目标值的最大数字
【动态规划】【数学】【C++算法】1449. 数位成本和为目标值的最大数字
|
人工智能 算法 测试技术
【数学】【排序】【C++算法】3027人员站位的方案数
【数学】【排序】【C++算法】3027人员站位的方案数
|
存储 算法 Serverless
【C/C++ 数据结构】深入探索数据结构中算法复杂度:从C++和数学的视角
【C/C++ 数据结构】深入探索数据结构中算法复杂度:从C++和数学的视角
180 0
|
2月前
|
机器学习/深度学习 人工智能 算法
当AI提示词遇见精密算法:TimeGuessr如何用数学魔法打造文化游戏新体验
TimeGuessr融合AI与历史文化,首创时间与空间双维度评分体系,结合分段惩罚、Haversine距离计算与加权算法,辅以连击、速度与完美奖励机制,实现公平且富挑战性的游戏体验。
|
3月前
|
机器学习/深度学习 算法 网络性能优化
【EI复现】基于元模型优化算法的主从博弈多虚拟电厂动态定价和能量管理(Matlab代码实现)
【EI复现】基于元模型优化算法的主从博弈多虚拟电厂动态定价和能量管理(Matlab代码实现)
|
9月前
|
机器学习/深度学习 算法
扩散模型=进化算法!生物学大佬用数学揭示本质
在机器学习与生物学交叉领域,Tufts和Harvard大学研究人员揭示了扩散模型与进化算法的深刻联系。研究表明,扩散模型本质上是一种进化算法,通过逐步去噪生成数据点,类似于进化中的变异和选择机制。这一发现不仅在理论上具有重要意义,还提出了扩散进化方法,能够高效识别多解、处理高维复杂参数空间,并显著减少计算步骤,为图像生成、视频合成及神经网络优化等应用带来广泛潜力。论文地址:https://arxiv.org/pdf/2410.02543。
254 21
|
10月前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
3051 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
10月前
|
机器学习/深度学习 人工智能 算法
Transformer打破三十年数学猜想!Meta研究者用AI给出反例,算法杀手攻克数学难题
《PatternBoost: Constructions in Mathematics with a Little Help from AI》提出了一种结合传统搜索算法和Transformer神经网络的PatternBoost算法,通过局部搜索和全局优化交替进行,成功应用于组合数学问题。该算法在图论中的Ramsey数研究中找到了更小的反例,推翻了一个30年的猜想,展示了AI在数学研究中的巨大潜力,但也面临可解释性和通用性的挑战。论文地址:https://arxiv.org/abs/2411.00566
220 13
|
存储 算法 决策智能
【算法】博弈论(C/C++)
【算法】博弈论(C/C++)

热门文章

最新文章