MAGRID DP

来源: http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=10907#problem/A   

ACM International Collegiate Programming Contest, Asia-Amritapuri Site, 2011

题意:有一个矩阵,要求从左上角走到右下角。每个方格里有正数或者负数。从左上角走的时候有一定的血量,走到一个方格,若该方格是负数,则需要减去该方格的血量,若是正数,则可以加上该方格的血量。若血量小于等于0,则不能继续走下去。求若想走到右下角,则从左上角出发时最少需要多少的血量。
思路:这道题我是用DP做的。不过标程是用二分做的。我的思路是:倒着DP。即从右下角向左上角Dp。到达右下角时的血量最少为1,另dp[i][j]为到达第i行第j列时能继续往下走的最少血量。则dp[i-1][j] = min(dp[i-1][j] , dp[i][j] - num[i-1][j]), dp[i][j-1] = min (dp[i][j-1], dp[i][j]  - num[i][j-1])。这样一直求上去就可以得到dp[1][1]的值。在这个过程中,有一点需要注意,若求出的某点血量为小于等于0,则应该赋值为1,这点很好理解。最后dp[1][1] = min (dp[1][2] , dp[2][1])。
代码:
#include <iostream>#include <cstdio>#include <string.h>#include <climits>using namespace std;#define CLR(arr,val) memset(arr,val,sizeof(arr))const int N = 510;int dp[N][N],num[N][N];int min(int a,int b){	return a<b ? a:b;}int main(){	//freopen("1.txt","r",stdin);	int row,col;	int numcase;	scanf("%d",&numcase);	while(numcase--){	  scanf("%d%d",&row,&col);	  CLR(num,0);	  for(int i = 1; i <= row; ++i){	    for(int j = 1; j <= col; ++j){			scanf("%d",&num[i][j]);			dp[i][j] = INT_MAX;		}	  }	  dp[row][col] = 1;	  num[1][1] = 1;	  for(int i = row; i >= 1; --i){		  for(int j = col; j >= 1; --j){			  if(i-1 > 0 && i-1 < row){				  int x = dp[i][j] - num[i-1][j];				  if(x <= 0) x = 1;				  dp[i-1][j] = min(dp[i-1][j],x);			  }			  if(j-1 > 0 && j - 1 < col){			      int x = dp[i][j] - num[i][j-1];				  if(x <= 0) x = 1;				  dp[i][j-1] = min(dp[i][j-1],x);			  }		  }	  }	  int mm = INT_MAX;      mm = min(mm,dp[1][2]);	  mm = min(mm,dp[2][1]);	  printf("%d\n",mm);	}	return 0;}


10-82 A1-1查询联系人信息 分数 20 作者 柯海丰 单位 浙大城市学院 在顾客表(customers)中找出所在城市(City)为London的公司名(CompanyName)和联系人名(ContactName) 提示:请使用SELECT语句作答。 表结构: 列名 数据类型 长度 主码 说明 CustomerID varchar 5 √ 顾客编号 CompanyName varchar 40 公司名称 ContactName varchar 30 联系姓名 ContactTitle varchar 30 联系头衔 Address varchar 60 地址 City varchar 15 城市 Region varchar 15 区域 PostalCode varchar 10 邮政编码 Country varchar 15 国家 Phone varchar 24 电话 Fax varchar 24 传真 表样例 请在这里给出上述表结构对应的表样例。例如 customers表: CustomerID CompanyName ContactName City ALFKI Alfreds Futterkiste Maria Anders Berlin ANATR Ana Trujillo Emparedados y helados Ana Trujillo Mxico D.F. ANTON Antonio Moreno Taquera Antonio Moreno Mxico D.F. AROUT Around the Horn Thomas Hardy London BERGS Berglunds snabbkp Christina Berglund Lule BLAUS Blauer See Delikatessen Hanna Moos Mannheim BLONP Blondesddsl pre et fils Frdrique Citeaux Strasbourg BOLID Blido Comidas preparadas Martn Sommer Madrid BONAP Bon app' Laurence Lebihan Marseille BOTTM Bottom-Dollar Markets Elizabeth Lincoln Tsawassen 输出样例: 请在这里给出输出样例。例如: CompanyName ContactName Around the Horn Thomas Hardy 代码长度限制 16 KB 时间限制 400 ms 数据库 MySQL 结果输出要求 严格对比顺序与数据 建表语句 结果表结构
11-13
内容概要:本文围绕EKF SLAM(扩展卡尔曼滤波同步定位与地图构建)的性能展开多项对比实验研究,重点分析在稀疏与稠密landmark环境下、预测与更新步骤同时进行与非同时进行的情况下的系统性能差异,并进一步探讨EKF SLAM在有色噪声干扰下的鲁棒性表现。实验考虑了不确定性因素的影响,旨在评估不同条件下算法的定位精度与地图构建质量,为实际应用中EKF SLAM的优化提供依据。文档还提及多智能体系统在遭受DoS攻击下的弹性控制研究,但核心内容聚焦于SLAM算法的性能测试与分析。; 适合人群:具备一定机器人学、状态估计或自动驾驶基础知识的科研人员及工程技术人员,尤其是从事SLAM算法研究或应用开发的硕士、博士研究生和相关领域研发人员。; 使用场景及目标:①用于比较EKF SLAM在不同landmark密度下的性能表现;②分析预测与更新机制同步与否对滤波器稳定性与精度的影响;③评估系统在有色噪声等非理想观测条件下的适应能力,提升实际部署中的可靠性。; 阅读建议:建议结合MATLAB仿真代码进行实验复现,重点关注状态协方差传播、观测更新频率与噪声模型设置等关键环节,深入理解EKF SLAM在复杂环境下的行为特性。稀疏 landmark 与稠密 landmark 下 EKF SLAM 性能对比实验,预测更新同时进行与非同时进行对比 EKF SLAM 性能对比实验,EKF SLAM 在有色噪声下性能实验
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值