UVa 10881 Piotr's Ants

本文介绍了一个基于排序和比较的算法,用于模拟一组蚂蚁在固定时间内沿直线移动并改变方向的过程。该算法首先记录每只蚂蚁的起始位置和方向,然后预测它们在一段时间后的最终位置及方向变化情况,并考虑了越界的情况。
部署运行你感兴趣的模型镜像
蚂蚁的相对顺序不变,因此把所有目标位置排序,从左到右对应初始状态下的蚂蚁。
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn =10000+5;

struct node
{
  int id;
  int p;
  int d;
  bool operator<(const node &a)const
  {
       return p<a.p;
  }       
}before[maxn],after[maxn];
const char dirName[][10]={"L","Turning","R"};

int order[maxn];

int main()
{
    int k,i,p,d,T,L,n;
    char c;
   scanf("%d",&k);
   
   for(int Case=1;Case<=k;Case++)
   {
       scanf("%d%d%d",&L,&T,&n);
       
      // printf("+++++---");
       for(i=0;i<n;i++)
       {
          scanf("%d %c",&p,&c);
      //     printf("hahha");
          d=(c=='L')?-1:1;
          before[i]=(node){i,p,d};
          
          after[i]=(node){0,p+T*d,d};
      } 
         
      sort(before,before+n);
      
   //   for(i=0;i<n;i++)
  //    {
  //      printf("%d%d%d++\n",before[i].id,before[i].p,before[i].d);                
  //    }
      
   //   for(i=0;i<n;i++)
   //   {
      //    printf("%d%d%d-----------\n",after[i].id,after[i].p,after[i].d);                
   //   }
      
      
      for(i=0;i<n;i++)
      {
        order[before[i].id ]=i;
      }
      
     sort(after,after+n); 
      //for(i=0;i<n;i++);
      // printf("%d ",order[i]);
      
     for(i=0;i<n-1;i++)
      if(after[i].p==after[i+1].p) after[i].d=after[i+1].d=0;
      
     // printf("hahha");
     printf("Case #%d:\n",Case);
    for(i=0;i<n;i++)
    {
     int  a=order[i];
      
      if(after[a].p<0 || after[a].p>L) printf("Fell off\n");
      else printf("%d %s\n",after[a].p,dirName[after[a].d+1]);
                          
    
    }  
      printf("\n");
  } 
    
  //for(;;);  
    
    
  return 0;    
}


您可能感兴趣的与本文相关的镜像

GPT-SoVITS

GPT-SoVITS

AI应用

GPT-SoVITS 是一个开源的文本到语音(TTS)和语音转换模型,它结合了 GPT 的生成能力和 SoVITS 的语音转换技术。该项目以其强大的声音克隆能力而闻名,仅需少量语音样本(如5秒)即可实现高质量的即时语音合成,也可通过更长的音频(如1分钟)进行微调以获得更逼真的效果

基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究”展开,提出了一种结合数据驱动方法与Koopman算子理论的递归神经网络(RNN)模型线性化方法,旨在提升纳米定位系统的预测控制精度与动态响应能力。研究通过构建数据驱动的线性化模型,克服了传统非线性系统建模复杂、计算开销大的问题,并在Matlab平台上实现了完整的算法仿真与验证,展示了该方法在高精度定位控制中的有效性与实用性。; 适合人群:具备一定自动化、控制理论或机器学习背景的科研人员与工程技术人员,尤其是从事精密定位、智能控制、非线性系统建模与预测控制相关领域的研究生与研究人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能预测控制;②为复杂非线性系统的数据驱动建模与线性化提供新思路;③结合深度学习与经典控制理论,推动智能控制算法的实际落地。; 阅读建议:建议读者结合Matlab代码实现部分,深入理解Koopman算子与RNN结合的建模范式,重点关注数据预处理、模型训练与控制系统集成等关键环节,并可通过替换实际系统数据进行迁移验证,以掌握该方法的核心思想与工程应用技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值