当前位置: 首页 > news >正文

舞狮表演(dp)

 

#include <bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int main()
{
  int t;
  cin>>t;
  while(t--){
    int n;
    cin>>n;
    int a[N][N];
    for(int i=1;i<=n;i++){
      for(int j=1;j<=n;j++){
        int x;
        cin>>x;
        if(x&1) a[i][j]=1; // 如果金额是奇数,a[i][j] = 1
        else a[i][j]=0;    // 如果金额是偶数,a[i][j] = 0
      }
    }
   
    int f[N][N];// 定义 DP 数组,f[i][j] 表示到达 (i,j) 的最小花费
    for(int i=0;i<=n;i++){
      fill(f[i], f[i] + n + 1, 1e9);// 将 f[i][0] 到 f[i][n] 初始化为 1e9,表示不可达
      a[0][i]=-1; // 设置第 0 行列为边界,值为 -1
      a[i][0]=-1;
    }
    f[1][1]=a[1][1] ? 0:n; // 若 a[1][1] = 0 (偶数),花费 n
    for(int i=1;i<=n;i++){
      for(int j=1;j<=n;j++){
        f[i][j]=min(f[i][j], f[i-1][j]+(a[i][j]==0)*n); // 从上方 (i-1,j) 转移
        if(a[i][j]==a[i][j-1]) f[i][j]=min(f[i][j], f[i][j-1]); // 从左方 (i,j-1) 转移
      }
    }
    if(f[n][n]==1e9) cout<<"NO!"<<endl; // 若 f[n][n] 仍为 1e9,路径不可达
    else cout<<f[n][n]<<endl;;
  }

  return 0;
}

if (x & 1) a[i][j] = 1;

else a[i][j] = 0;        将金额转为奇偶状态,方便处理

  • 奇数:a[i][j] = 1。偶数:a[i][j] = 0。

&:按位与运算符。

  • 对两个操作数的每一位进行与运算:1 & 1 = 1,0 & 0 = 0,1 & 0 = 0。由于奇数的二进制表示最低位是 1,偶数的二进制表示最低位是 0。因此可以判断奇偶性

int f[N][N];到达(i,j)最小花费。(每次遇到偶数都要给一行1元,即n元)

f[1][1] = a[1][1] ? 0 : n;

  • 起点初始化:
    • 若 a[1][1] = 1(奇数),f[1][1] = 0。
    • 若 a[1][1] = 0(偶数),设为 n(花费为n)

DP 计算

向下转移

  • f[i][j] = min(f[i][j], f[i-1][j] + (a[i][j] == 0) * n);:
    • 从 (i-1,j) 到达 (i,j)。
    • 若 a[i][j] == 0(偶数),花费 n 。
    • 若 a[i][j] == 1(奇数),不用花费。

向右转移

  • if (a[i][j] == a[i][j-1]) f[i][j] = min(f[i][j], f[i][j-1]);:
    • 若当前格与左边格奇偶性相同,继承左边的花费。

相关文章:

  • 基于32单片机的无人机直流电机闭环调速系统设计
  • xpath轴
  • git 子模块的使用
  • EMQX安装与配置
  • java项目之基于ssm的疫苗预约系统(源码+文档)
  • 基于分类算法的学习失败预警(上)
  • 力扣热题100(方便自己复习,自用)
  • 利用ffmpeg库实现音频Opus编解码
  • 车载以太网网络测试-18【传输层-DOIP协议-1】
  • PyTorch模型转ONNX例子
  • 深入探究 JVM 堆的垃圾回收机制(一)— 判活
  • python3 -m http.sever 8080加载不了解决办法
  • 6个常见的Python设计模式及应用场景
  • Python实战:开发经典猜拳游戏(石头剪刀布)
  • MySQL事务全解析:从概念到实战
  • 【CXX-Qt】2.1.1 为 WebAssembly 构建
  • 汽车免拆诊断案例 | 2024 款路虎发现运动版车无法正常识别智能钥匙
  • Java EE 进阶:MyBatis
  • 【NLP】 11. 神经网络,线性模型,非线性模型,激活函数,感知器优化,正则化学习方法
  • SpringBoot配置文件加载优先级
  • 国家卫生健康委通报关于肖某引发舆情事件调查处置进展情况
  • 商务部:长和集团出售港口交易各方不得规避审查
  • 长三角首次,在铁三赛事中感受竞技与生态的共鸣
  • 陕西旱情实探:大型灌区农业供水有保障,大旱之年无旱象
  • 共情场域与可持续发展——关于博物馆、美术馆运营的新思考
  • A股高开高走:沪指涨0.82%,创指涨2.63%,超4100股收涨