洛谷P1130 红牌
题目描述
某地临时居民想获得长期居住权就必须申请拿到红牌。获得红牌的过程是相当复杂 ,一共包括N个步骤。每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件。为了加快进程,每一步政府都派了M个工作人员来检查材料。不幸的是,并不是每一个工作人员效率都很高。尽管如此,为了体现“公开政府”的政策,政府部门把每一个工作人员的处理一个申请所花天数都对外界公开。
为了防止所有申请人都到效率高的工作人员去申请。这M*N个工作人员被分成M个小组。每一组在每一步都有一个工作人员。申请人可以选择任意一个小组也可以更换小组。但是更换小组是很严格的,一定要相邻两个步骤之间来更换,而不能在某一步骤已经开始但还没结束的时候提出更换,并且也只能从原来的小组I更换到小组I+1,当然从小组M可以更换到小组1。对更换小组的次数没有限制。
例如:下面是3个小组,每个小组4个步骤工作天数:
小组1 2 6 1 8
小组2 3 6 2 6
小组3 4 2 3 6
例子中,可以选择小组1来完成整个过程一共花了2+6+1+8=17天,也可以从小组2开始第一步,然后第二步更换到小组3,第三步到小组1,第四步再到小组2,这样一共花了3+2+1+6=12天。你可以发现没有比这样效率更高的选择。
你的任务是求出完成申请所花最少天数。
输入输出格式
输入格式:
输入文件red.in的第一行是两个正整数N和M,表示步数和小组数。接下来有M行,每行N个非负整数,第i+1(1<=i<=M)行的第j个数表示小组i完成第j步所花的天数,天数都不超过1000000。
输出格式:
输入文件red.out仅包括1个正整数,为完成所有步所需最少天数。。
输入输出样例
4 3
2 6 1 8
3 6 2 6
4 2 3 6
12
说明
【数据规模与约定】
对于100%的数据,有N ≤ 2000, M ≤ 1000。
动态规划水题
枚举步骤数和小组数,转移即可:f[步骤数][完成最后一步的组]=min(f[i-1][j],f[i-1][j-1]+a[i][j]
m组可以转移到1组,需要特判。
因为把一个1敲成i还一直没看出来,WA了一串……
/*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int mxn=;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,m;
int mp[mxn][mxn];
int f[mxn][mxn];
int h[mxn][mxn],s[mxn][mxn];
int main(){
n=read();m=read();
int i,j;
for(i=;i<=n;i++){
for(j=;j<=m;j++)
mp[i][j]=read();
}
for(i=;i<=n;i++)
for(j=;j<=m;j++){
if(!mp[i][j])h[i][j]=h[i][j-]+;
else h[i][j]=;
}
for(j=;j<=n;j++)s[][j]=;
for(i=;i<=m;i++)h[i][]=;
for(i=;i<=m;i++)
for(j=;j<=n;j++){
if(!mp[j][i])s[j][i]=s[j-][i]+;
else s[j][i]=;
}
int ans=;
for(i=;i<=n;i++)
for(j=;j<=m;j++){
if(!mp[i][j])continue;
f[i][j]=min(f[i-][j-],min(s[i-][j],h[i][j-]))+;
ans=max(f[i][j],ans);
}
for(i=;i<=n;i++){
for(j=m;j;j--){
if(!mp[i][j])h[i][j]=h[i][j+]+;
else h[i][j]=;
}
}
for(i=;i<=m;i++) h[i][m+]=;
memset(f,,sizeof f);
for(i=;i<=n;i++)
for(j=;j<=m;j++){
if(!mp[i][j])continue;
f[i][j]=min(f[i-][j+],min(s[i-][j],h[i][j+]))+;
ans=max(ans,f[i][j]);
}
printf("%d\n",ans);
}
洛谷P1130 红牌的更多相关文章
- 洛谷 P1130 红牌
P1130 红牌 题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括N个步骤.每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件.为了加快进程 ...
- 洛谷——P1130 红牌
题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括N个步骤.每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件.为了加快进程,每一步政府都派了 ...
- 洛谷P1130红牌(简单DP)
题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括NNN个步骤.每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件.为了加快进程,每一步政府都 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
随机推荐
- 转: EclipseIDE开发 for C++
Eclipse 开发C++ 程序 http://tangmingjie2009.iteye.com/blog/2088363 Eclipse 开发C++ 程序 (二) 静态库 http://tangm ...
- Genymotion出现unknown generic error和This may occur if you are using a proxy错误的解决方案
今天在实验室希望在Genymotion上多下载几个模拟器,需要重新登录帐号,却发现一个错误,叫做unknown generic error.前几天还出现过一个很诡异的问题.截图如下: . (1)unk ...
- 给H5页面添加百分比的进度条,精确度高
进度条样式地址:http://sandbox.runjs.cn/show/6vxbxjrf SVG圆环样式地址:http://sandbox.runjs.cn/show/3ho1qpe9 原理:由于H ...
- f2fs解析(六)
f2fs中有对一个bitmap进行操作的函数,感觉很巧妙,和大家分享一下: 1333 static inline void f2fs_change_bit(unsigned int nr, char ...
- Css 特殊或不常用属性
1. -webkit-font-smoothing: antialiased; CSS3中用于webkit引擎(如chrome)中设置字体的抗锯齿或者说光滑度的属性.有3个属性:none用于小像素的文 ...
- Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- SignalR 实现web浏览器客户端与服务端的推送功能
SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话. 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换:它将继 ...
- Asp.net用户控件和委托事件
在Asp.net系统制作过程中,门户类型的网站,我们可以用DIV+CSS+JS+Ajax全部搞定,但是一旦遇到界面元素比较复杂的时候,还是UserControl比较方便一些,各种封装,各种处理,然后拖 ...
- 【网站搭建教程】黑手VIP卡盟搭建教程(无KEY)
黑手VIP卡盟搭建教程(无KEY)教程介绍:第一课 卡盟介绍与课程流程.exe第七课 卡盟源码的搜集与选择_.exe第三课 卡盟域名之注册.exe第九课 IIS的本机架设_.exe第二课 卡盟域名之选 ...
- phpcms-v9视频模型的添加
1. 下载化蝶自由飞插件http://www.phpcms.cn/show-90-8-1.html 下载回去后解压,覆盖 phpcms/ 和 statics/ 目录即可. 2. 执行一个sql语句 ...