洛谷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個正整數,為完成所有步所需最少天數。。

?

輸入輸出樣例

輸入樣例#1:
4 3 
2 6 1 8
3 6 2 6
4 2 3 6
輸出樣例#1:
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了一串……

 1 /*by SilverN*/
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<cstring>
 5 #include<cstdio>
 6 #include<cmath>
 7 using namespace std;
 8 const int mxn=2501;
 9 int read(){
10     int x=0,f=1;char ch=getchar();
11     while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}
12     while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
13     return x*f;
14 }
15 int n,m;
16 int mp[mxn][mxn];
17 int f[mxn][mxn];
18 int h[mxn][mxn],s[mxn][mxn];
19 int main(){
20     n=read();m=read();
21     int i,j;
22     for(i=1;i<=n;i++){
23      for(j=1;j<=m;j++)
24          mp[i][j]=read();
25     }
26     for(i=1;i<=n;i++)
27         for(j=1;j<=m;j++){
28             if(!mp[i][j])h[i][j]=h[i][j-1]+1;
29             else h[i][j]=0;
30         }
31     for(j=1;j<=n;j++)s[0][j]=1;
32     for(i=1;i<=m;i++)h[i][0]=1;
33     for(i=1;i<=m;i++)
34         for(j=1;j<=n;j++){
35             if(!mp[j][i])s[j][i]=s[j-1][i]+1;
36             else s[j][i]=0;
37         }
38     int ans=0;
39     for(i=1;i<=n;i++)
40      for(j=1;j<=m;j++){
41          if(!mp[i][j])continue;
42          f[i][j]=min(f[i-1][j-1],min(s[i-1][j],h[i][j-1]))+1;
43          ans=max(f[i][j],ans);
44     }
45     for(i=1;i<=n;i++){
46         for(j=m;j;j--){
47             if(!mp[i][j])h[i][j]=h[i][j+1]+1;
48             else h[i][j]=0;
49         }
50     }
51     for(i=1;i<=m;i++) h[i][m+1]=1;
52     memset(f,0,sizeof f);
53     for(i=1;i<=n;i++)
54      for(j=1;j<=m;j++){
55          if(!mp[i][j])continue;
56          f[i][j]=min(f[i-1][j+1],min(s[i-1][j],h[i][j+1]))+1;
57          ans=max(ans,f[i][j]);
58     }
59     printf("%d\n",ans);
60 }

?

轉載于:https://www.cnblogs.com/SilverNebula/p/6039572.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260199.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260199.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260199.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GPS坐標換算

30.8872 》——>300.8872*60 53.232 ——>530.232*60 13.9230: 53 13.92"30: 53 13.92"》3053/6013.92/360030.887199同經度兩點之間距離dla30.887m * [差值/(1/3600)] 30.887m * 差值 *3600 111193.2m * 差值 同緯度兩點之間距離dlo30.887m * [差值/(1…

企業級應用框架(五)IOC容器在框架中的應用

前言 在上一篇我大致的介紹了這個系列所涉及到的知識點&#xff0c;在本篇我打算把IOC這一塊單獨提取出來講&#xff0c;因為IOC容器在解除框架層與層之間的耦合有著不可磨滅的作用。當然在本系列前面的三篇中我也提供了一種基于反射的解耦方式&#xff0c;但是始終不是很優雅&…

后端開發需要學什么_都2020年了,還在糾結學什么語言?| 后端篇

幾個禮拜前&#xff0c;一個學弟問我&#xff1a;“Ray&#xff0c;我打算之后要找工作了&#xff0c;不過現在自己沒有特別深入的語言&#xff0c;最近想找一門好好學一下&#xff0c;你覺得學什么語言好呀&#xff1f;”我表示&#xff1a;“這個要看你求職方向、個人喜好、市…

python掃描ip的端口打開情況

我們的韓國bss系統上線之后&#xff0c;要求對主機的端口、資源使用進行統計&#xff0c;端口每個主機去看&#xff0c;太費勁了&#xff0c;所以&#xff0c;就寫了這樣一個小程序&#xff0c;不是很完美但是&#xff0c;可以用啊&#xff01;哈哈哈&#xff0c;別噴&#xff…

flash java 通信,Flash到JavaScript的通信實例

從HTML可以發送數據到Flash,反過來也可以. 這個例子演示了如何應用Flash的Fscommand來發送數據到Javascript.簡要步驟:Flash中新建一個文件,保存為flash_to_javascript.fla創建一個文本域,設置成輸入文本(Input Text),選擇"border"以便我們能看到他,指定他的變量為in…

10個非常有用的CSS hack和技術

轉自&#xff1a;http://www.qianduan.net/10-useful-css-hacks-and-technique.html 1 – 跨瀏覽器的inline-block <style>li {width: 200px;min-height: 250px;border: 1px solid #000;display: -moz-inline-stack;display: inline-block;margin: 5px;zoom: 1;*display:…

Java的遞歸算法

遞歸算法設計的基本思想是&#xff1a;對于一個復雜的問題&#xff0c;把原問題分解為若干個相對簡單類同的子問題&#xff0c;繼續下去直到子問題簡單到可以直接求解&#xff0c;也就是說到了遞推的出口&#xff0c;這樣原問題就有遞推得解。 關鍵要抓住的是&#xff1a; &…

python list遍歷定位元素_python for循環,第二遍定位不到元素?

ycyzharry: 也不行&#xff0c;我的代碼import unittestimport timeimport xlrdfrom selenium import webdriverimport seleniumdef open_excel(filefile.xls):try:data xlrd.open_workbook(file)return dataexcept Exception as e:print(str(e))def excel_table_byindex(file…

發現Java程序中的Bug

昨天在CSDN上閱讀 "Java中十個常見的違規編碼"這篇文章時&#xff0c;無意中找到了3個 "發現Java程序中的Bug"工具。 文章地址&#xff1a;http://www.csdn.net/article/2012-09-11/2809829-common-code-violations-in-java其中&#xff0c; FindBugs? - …

原生php登錄注冊,原生php登陸注冊

本以為一個登陸注冊功能十來分鐘就寫好了&#xff0c;沒想到thinkPHP用久了&#xff0c;原生的php不會寫了最開始我直接寫了類和方法&#xff0c;在前臺傳遞參數給類的login方法(action"index.php/login"),嘗試幾次發現無法訪問&#xff0c;這才意識到&#xff0c;這…

SpringMVC REST 風格靜態資源訪問配置

1 在web.xml中使用默認servlet處理靜態資源&#xff0c;缺點是如果靜態資源過多&#xff0c;則配置量會比較大&#xff0c;一旦有遺漏&#xff0c;則會造成資源無法正常顯示或404錯誤。 <!-- 靜態資源訪問控制 --><servlet-mapping><servlet-name>default<…

生成對象

var c[name,age,city]; var d[xiaogang,12,anhui]; var a{}; for(var i0;i<3;i){a[c[i]]d[i]; } console.log(a); //返回 {name: "xiaogang", age: "12", city: "anhui"} 轉載于:https://www.cnblogs.com/xiaozhumaopao/p/6046823.html

3.寄存器(內存訪問)

CPU中&#xff0c;用16位來存儲一個字。高8位存放高位字節&#xff0c;低8位存放低位字節。內存存儲中&#xff0c;內存單元是字節單元&#xff08;1單元1字節&#xff09;&#xff0c;則一個字要用兩個地址連續的內存單元存放。內存存儲中&#xff0c;高位字節&#xff0c;和低…

shiro前后端分離_為什么要前后端分離?前后端分離的優點是什么?

隨著互聯網的高速發展以及IT開發技術的升級&#xff0c;前后端分離已成為互聯網項目開發的業界標準使用方式。在實際工作中&#xff0c;前后端的接口聯調對接工作量占HTML5大前端人員日常工作的30%-50%&#xff0c;甚至會更高。接下來千鋒小編分享的廣州HTML5大前端學習就給大家…

POJ 2152 Fire

算是我的第一個樹形DP 的題&#xff1a; 題目意思&#xff1a;N個城市形成樹狀結構。現在建立一些消防站在某些城市&#xff1b;每個城市有兩個樹形cost&#xff08;在這個城市建立消防站的花費&#xff09;&#xff0c;limit &#xff1b; 我們要是每個城鎮都是安全的&#xf…

php 解析HTTP協議六種請求方法,get,head,put,delete,post有什么區別

GET&#xff1a; 請求指定的頁面信息&#xff0c;并返回實體主體。HEAD&#xff1a; 只請求頁面的首部。POST&#xff1a; 請求服務器接受所指定的文檔作為對所標識的URI的新的從屬實體。PUT&#xff1a; 從客戶端向服務器傳送的數據取代指定的文檔的內容。DELETE&#xff1a; …

python的socket連接不上_Python套接字只允許一個連接,但在新的連接上斷開,而不是拒絕...

我不確定我完全理解你的問題&#xff0c;但我認為下面的例子可以滿足你的要求。服務器可以斷開舊用戶的連接&#xff0c;為新用戶提供服務。在服務器端&#xff1a;#!/usr/bin/env pythonimport socketimport multiprocessingHOST 127.0.0.1PORT 50007# you can do your real…

dede搜索php在哪,dede搜索頁面怎么調用及相關搜索調用

dede搜索頁面怎么調用&#xff0c;那幾天有事情&#xff0c;所以導致博客幾天都一直沒有更新&#xff0c;之前我們講過dede內容頁面和dede列表模板的調用&#xff0c;今天我們一起來學習下搜索頁面的調用&#xff0c;很多做企業站朋友們都不知道dede的搜索頁怎么仿&#xff0c;…

電腦中病毒后被隱藏的文件的顯示

用批處理或DOS更改屬性。批處理就是建個記事本&#xff0c;輸入attrib -h -s -r %~dp0\*.* /s /d&#xff0c;然后另存為隨便.bat&#xff0c;把它放到那些隱藏文件夾外面&#xff08;不是里面&#xff09;&#xff0c;然后雙擊打開&#xff0c;等它自己關閉窗口就好了轉載于:h…

HDU 3555 - Bomb

第一道數位dp&#xff0c;屬于基礎模板&#xff0c;又自卑小時沒學好數數了&#xff0c;只是不清楚為什么大家的dp定義都是相同的&#xff0c;很顯然么&#xff0c;難道我寫的是怪胎。。。 /* ID:esxgx1 LANG:C PROG:hdu3555 */ #include <cstdio> #include <cstring&…