题目描述

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

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

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

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

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

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

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

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

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1:

4 3
2 6 1 8
3 6 2 6
4 2 3 6
输出样例#1:

12

说明

【数据规模与约定】

对于100\%100%的数据,有N ≤ 2000, M ≤ 2000N≤2000,M≤2000。


这道题和数字三角形思路是一样的,只不过倒了过来再加上一个特判

先是正向推:

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
int n,m,mini=; int xz[][],dp[][];
using namespace std;
int main()
{
cin>>n>>m;//n 步数 m 小组数
for(int i=;i<=m;i++)
{
for(int j=;j<=n;j++)
{
cin>>xz[i][j];
}
}
for(int i=;i<=m;i++)
{
dp[i][]=xz[i][];
}
    
for(int j=;j<=n;j++)//这里是先循环j,可以对照上面的输入样例看
{
for(int i=;i<=m;i++)
{
if(i==)
{
dp[i][j]=min(dp[i][j-],dp[m][j-])+xz[i][j];
}
else
dp[i][j]=min(dp[i][j-],dp[i-][j-])+xz[i][j];
}
} for(int i=;i<=m;i++)
{
mini=min(mini,dp[i][n]);//从最后一行寻找最小的输出
}
cout<<mini;
}

反向抽烟操作来一波

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
#include <iostream>
#include <iomanip>
using namespace std;
int n,m,a[][],ans=<<;//ans必须要定大,不然找不到最小值
int main(){
scanf ("%d%d",&n,&m);
for (int i=;i<m;i++)
for (int j=;j<n;j++)scanf ("%d",&a[i][j]);
for (int j=n-;j>=;j--)//从倒数第2步开始,向第一步推进
//我用的是0下标
for (int i=;i<m;i++)
a[i][j]=min(a[(i+)%m][j+],a[i][j+])+a[i][j];//取最小值,更新为之后的步骤的最小值
for (int i=;i<m;i++)ans=min(ans,a[i][]);//找答案
printf ("%d",ans);//结束
return ;
}

这个题用我发的数字三角形的贪心做也可以,这里不再赘述

P1130 红牌的更多相关文章

  1. 洛谷 P1130 红牌

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

  2. P1130 红牌(动态规划)

    P1130 红牌 思路如下 这一题很像数字金字塔,我们可以正着求最小时间,当然也可以逆着求最小时间, 如果正着求:那么我们怎么求状态转移方程呢?,在这里我们假定状态转移方程为:dp[ i ][ j ] ...

  3. 洛谷P1130 红牌

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

  4. 洛谷——P1130 红牌

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

  5. 洛谷P1130红牌(简单DP)

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

  6. 题解 P1130 【红牌】

    逆推dp经典题目:数字三角形的折叠版 为什么这么说? 因为我们会发现:除了每一次都特判一下是否转换行号以外,剩下的思想没什么不同. 没看题目的看这里 先定义: n,m是步骤数目,小组数目 work[i ...

  7. Luogu【P1130】红牌(DP)

    欧拉 本蒟蒻第一个自己想出来的DP题 请移步题目链接 调了半天.i从1到n,j从1到m. f[i][j]表示的是第i道工序在第j个小组办完所花的最短时间. 因为要用到上一个状态,而上一个状态要么是同一 ...

  8. 【u120】红牌

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括N个步骤.每一步骤 ...

  9. [luoguP1130] 红牌(DP)

    传送门 幼儿园DP. ——代码 #include <cstdio> #include <iostream> ; << ); int a[MAXN][MAXN], f ...

随机推荐

  1. 史上最全面的Elasticsearch使用指南

    Elasticsearch使用指南 Elasticsearch使用指南 前言 ES是什么 什么是全文检索 ES的应用场景 ES的存储结构 第一章:安装 1.下载 2.解压 3.配置 4.启动 5.查看 ...

  2. Xamarin.Forms 3.0的新特性

    近期因为工作关系开始使用Xamarin,翻译了两篇国外的介绍3.0新特性的文章,供大家参考. 第一篇文章来自Xamarin官网,原文地址:https://blog.xamarin.com/xamari ...

  3. C\S 架构 DNS服务器 交换机 路由器

    ------------------------只有不快的斧,没有劈不开的柴;只有想不到的人,没有做不到的事.想干总会有办法,不想干总会有理由!# -------------------------- ...

  4. hdu3294(马拉车模板)

    注意:string会超时 #include<bits/stdc++.h> using namespace std; #define ll long long const double PI ...

  5. R语言绘制箱型图

    箱形图是数据集中数据分布情况的衡量标准.它将数据集分为三个四分位数.盒形图表示数据集中的最小值,最大值,中值,第一四分位数和第四四分位数. 通过为每个数据集绘制箱形图, 比较数据集中的数据分布也很有用 ...

  6. 阿里云服务器使用镜像市场上的环境以后sql不能远程问题

    关于阿里云的服务器,首先要说的就是买了以后是没有环境的,什么都需要自己配置,也是在这个上面栽了很多跟头最后去的镜像市场买的一个IIS8+SQL2016的asp.net环境 怎么说呢,感觉有些问题的本源 ...

  7. 自定义threading.local

    1.threading相关. # Author:Jesi # Time : 2018/12/28 14:21 import threading import time from threading i ...

  8. 持续集成之Jenkins自动部署war包到远程服务器

    一.无war包链接的情况 无war包链接时,需先下载war包到本地,然后执行: ---------------------------------------------以下部分为转载-------- ...

  9. 前端三大框架Angular & React & Vue

    前端三大框架: Angular[Google]:一套框架,多种平台移动端 & 桌面端.学会用Angular构建应用,然后把这些代码和能力复用在多种多种不同平台的应用上 —— Web.移动 We ...

  10. [转帖]Docker的数据管理(volume/bind mount/tmpfs)

    Docker(十五)-Docker的数据管理(volume/bind mount/tmpfs) https://www.cnblogs.com/zhuochong/p/10069719.html do ...