题目描述

某地临时居民想获得长期居住权就必须申请拿到红牌。获得红牌的过程是相当复杂 ,一共包括NNN个步骤。每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件。为了加快进程,每一步政府都派了MMM个工作人员来检查材料。不幸的是,并不是每一个工作人员效率都很高。尽管如此,为了体现“公开政府”的政策,政府部门把每一个工作人员的处理一个申请所花天数都对外界公开。

为了防止所有申请人都到效率高的工作人员去申请。这M×NM \times NM×N个工作人员被分成MMM个小组。每一组在每一步都有一个工作人员。申请人可以选择任意一个小组也可以更换小组。但是更换小组是很严格的,一定要相邻两个步骤之间来更换,而不能在某一步骤已经开始但还没结束的时候提出更换,并且也只能从原来的小组I更换到小组I+1I+1I+1,当然从小组MMM可以更换到小组111。对更换小组的次数没有限制。

例如:下面是333个小组,每个小组444个步骤工作天数:

小组111 : 2,6,1,82, 6 ,1 ,82,6,1,8

小组222 : 3,6,2,63,6, 2, 63,6,2,6

小组333 : 4,2,3,6 4, 2 ,3 ,64,2,3,6

例子中,可以选择小组111来完成整个过程一共花了2+6+1+8=172+6+1+8=172+6+1+8=17天,也可以从小组222开始第一步,然后第二步更换到小组3,第三步到小组111,第四步再到小组222,这样一共花了3+2+1+6=123+2+1+6=123+2+1+6=12天。你可以发现没有比这样效率更高的选择。

你的任务是求出完成申请所花最少天数。

输入格式

第一行是两个正整数NNN和MMM,表示步数和小组数。接下来有MMM行,每行NNN个非负整数,第i+1(1≤i≤M)i+1(1 \le i \le M)i+1(1≤i≤M)行的第j个数表示小组iii完成第j步所花的天数,天数都不超过100000010000001000000。

输出格式

一个正整数,为完成所有步所需最少天数。。

输入输出样例

输入 #1

4 3
2 6 1 8
3 6 2 6
4 2 3 6
输出 #1

12
简单DP,注意一层层更新。
#include <bits/stdc++.h>
using namespace std;
int a[][]={};
int dp[][]={};//dp[i][j]表示在第i组完成第j项所花费的最少时间 dp[i][j]=min(dp[i][j-1]+a[i][j],dp[i-1][j-1]+a[i][j])//前提是i-1>0
int n,m;
int main()
{
scanf("%d%d",&n,&m);
int i,j;
for(i=;i<=m;i++)
{
for(j=;j<=n;j++)
{
scanf("%d",&a[i][j]);
}
dp[i][]=a[i][];
}
int ans=0x3f3f3f3f;
for(j=;j<=n;j++)
{
for(i=;i<=m;i++)
{
if(i==)
{
dp[i][j]=min(dp[i][j-]+a[i][j],dp[m][j-]+a[i][j]);
}
else dp[i][j]=min(dp[i][j-]+a[i][j],dp[i-][j-]+a[i][j]); }
}
for(i=;i<=m;i++)ans=min(ans,dp[i][n]);
cout<<ans;
return ;
}

洛谷P1130红牌(简单DP)的更多相关文章

  1. 洛谷 P1130 红牌

    P1130 红牌 题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括N个步骤.每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件.为了加快进程 ...

  2. 洛谷P1130 红牌

    题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括N个步骤.每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件.为了加快进程,每一步政府都派了 ...

  3. 洛谷——P1130 红牌

    题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括N个步骤.每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件.为了加快进程,每一步政府都派了 ...

  4. 洛谷 - P2335 - 位图 - 简单dp

    https://www.luogu.org/problemnew/show/P2335 假如我们使用dp的话,每次求出一个点的左上方.右上方.左下方.右下方的最近的白点的距离.那么只是n²的复杂度.这 ...

  5. 洛谷 - P1044 - 栈 - 简单dp

    https://www.luogu.org/problemnew/show/P1044 由于是用标签搜索进来的,所以这道题一定是有dp的解法. 很显然规定每次加入元素之前可以从栈中清理出任意数量的元素 ...

  6. 洛谷P1244 青蛙过河 DP/思路

    又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的 ...

  7. 洛谷1387 二维dp 不是特别简略的题解 智商题

    洛谷1387 dp题目,刚开始写的时候使用了前缀和加搜索,复杂度大概在O(n ^ 3)级别,感觉这么写还是比较对得起普及/提高-的难度的..后来看了题解区各位大神的题解,开始一脸mb,之后备受启发. ...

  8. 洛谷 P2657 (数位DP)

    ### 洛谷 P2657 题目链接 ### 题目大意:给你一个数的范围 [A,B] ,问你这段区间内,有几个数满足如下条件: 1.两个相邻数位上的数的差值至少为 2 . 2.不包含前导零. 很简单的数 ...

  9. 洛谷 P3049 Landscaping ( 贪心 || DP)

    题意 : 有n块土地,每块有A[i]泥土,现把其改造成B[i]泥土,有3种操作:(1)花费X向任意土地增加1泥土:(2)花费Y向任意土地减少1泥土:(3)花费Z*|i-j|把土地i的1泥土运到土地j. ...

随机推荐

  1. 树莓派中安装ubuntu及相关设置

    一.下载并烧录系统 首先准备好我们要烧录的ubuntu_meta系统,可以在树莓派官网中下载https://www.raspberrypi.org/downloads/ 这里我们选择 Raspberr ...

  2. C语言 栈的初始化,入栈,出栈,判断栈是否为空,清空栈等函数

    #include <stdio.h>#include <stdlib.h> typedef struct Node{ int data ; struct Node * pNex ...

  3. BFS-八数码问题与状态图搜索

    在一个3*3的棋盘上放置编号为1~8的八个方块,每个占一格,另外还有一个空格.与空格相邻的数字方块可以移动到空格里.任务1:指定的初始棋局和目标棋局,计算出最少的移动步数:任务2:数出数码的移动序列. ...

  4. c#数据筛选和排序

    一.TreeView SelectedNode    选中的节点            Level    节点的深度(从0开始)                AfterSelect    节点选中后 ...

  5. flask 路由规划(blueprint)

    # 统一路由蓝牙规划 # file:blueprint_route.py from flask import Blueprint route_test = Blueprint("home&q ...

  6. 初识Vue--生命周期

    初学Vue,写一些随记谨防忘记,不足之处谢谢指出!!! 本文可以直接复制自行创建一个HTML页面,查看结果. <!DOCTYPE html> <html lang="en& ...

  7. c# DPI SCale

    public class Screen { /// Primary Screen #region Win32 API [DllImport("user32.dll")] stati ...

  8. 第三十八篇 入门机器学习——Numpy.array的基本操作——查看向量或矩阵

    No.1. 初始化状态 No.2. 通过ndim来查看数组维数,向量是一维数组,矩阵是二维数组 No.3. 通过shape来查看向量中元素的个数或矩阵中的行列数 No.4. 通过size来查看数组中的 ...

  9. &nbsp;&laquo;&raquo;&lt;&gt;

     空格   «双小于 »双大于 <小于 >大于

  10. CentOS 7下用firewall-cmd控制端口与端口转发

    # 将80端口的流量转发至192.168.0.1的8080端口 1.firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toad ...