1. 程式人生 > >MZ test17# NOIP模擬題 #T3 第3 題 登山機器人(robot.pas/cpp)

MZ test17# NOIP模擬題 #T3 第3 題 登山機器人(robot.pas/cpp)

第3 題 登山機器人(robot.pas/cpp)

【問題描述】

登山機器人是一個極富挑戰性的高技術密集型科學研究專案,它為研究發展多智慧體系統和多機器人之間的合作與對抗提供了生動的研究模型。

登山機器人可以攜帶有限的能量。在登山過程中,登山機器人需要消耗一定能量,連續攀登的路程越長,其攀登的速度就越慢。在對 n 種不同型別的機器人作效能測試時,測定出每個機器人連續攀登1米,2米,…,k米所用的時間。現在要對這n個機器人進行綜合性能測試,舉行機器人接力攀登演習。攀登的總高度為 m米。規定每個機器人只能攀登 1次或者不攀登,每次至少攀登1米,最多攀登k 米,而且每個機器人攀登的高度必須是整數,即只能在整米處接力。安排每個機器人攀登適當的高度,使完成接力攀登用的時間最短。

程式設計任務:給定 n 個登山機器人接力攀登的總高度m,以及每個機器人連續攀登 1 米,2 米,…,k米所用的時間,程式設計計算最優攀登方案。

【輸入資料】

第一行是正整數n(1≤n≤1000),k(1≤k≤400)和 m(1≤m≤5000)分別表示機器人的個數,每個機器人最多可以攀登的高度,和攀登的總高度。接下來的 n行中,每行有 k個正整數,分別表示機器人連續攀登1米,2米,…,k 米所用的時間。

【輸出資料】

最短攀登時間。

【樣例輸入】robot.in

5 10 25  

24 49 75 102 130 160 192 230 270 320

23 48 75 103 139 181 224 274 344 415

22 49 80 180 280 380 480 580 680 780

25 51 80 120 170 220 270 320 370 420

23 49 79 118 158 200 250 300 350 400

【樣例輸出】robot.out

727

20分的迷之DP。

#include<cstdio>
#include<string>
using namespace std;
#define MAXN 1010
#define MAXK 410
#define oo 999999999
 
int n,k,m,ro[MAXN][MAXK],f[MAXN][MAXN];
 
int main()
{
    freopen("robot.in","r",stdin);
    freopen("robot.out","w",stdout);
    scanf("%d%d%d",&n,&k,&m);
    int i,j;
    for(i=1;i<=n;i++)
        for(j=1;j<=k;j++) scanf("%d",&ro[i][j]);
    memset(f,63,sizeof(f));
    f[0][0]=0;
    for(i=1;i<=n;i++)//列舉第i個機器人
        for(j=1;j<=m;j++)//列舉高度
            for(int h=1;h<=k;h++)//列舉每個機器人能走的高度
                if(j-h>=0) f[i][j]<?=f[i-1][j-h]+ro[i][h];
    printf("%d",f[n][m]);
    return 0;
}

100‘
#include<cstdio>
#include<algorithm>
#include<cstring>
#define inf 0x3f3f3f3f
using namespace std;
int n,k,h[10000],ans=inf,vis[10000],rec[10000];
struct Prog{
	int progs,progt,t;
}p[10000];
bool cmp(Prog a,Prog b)
{
	if(a.progs==b.progs)return a.progt < b.progt;
	return a.progs<b.progs;
}
int dfs(int t)
{
	if(vis[t])return rec[t];
	if(!h[t])
	{
		if(t<n)
		dfs(t+1);
		else
		return 0;
	}
	else
	{
		int m,r=inf;
		for(int i=1;i<=k;i++)
		if(p[i].progs==t)
		{
			m=i;break;
		}
		while(p[m].progs==t)
		{			
			r=min(r,p[m].t+dfs(p[m].progt+1));
			m++;
		}
		vis[t]=1;
		rec[t]=r;
		return r;
	}
}
int main()
{
	freopen("sche.in","r",stdin);
	freopen("sche.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i<=k;i++)
	{
		scanf("%d%d",&p[i].progs,&p[i].t);
		p[i].progt=p[i].progs+p[i].t-1;
		h[p[i].progs]=1;
	}
	sort(p+1,p+1+k,cmp);
	ans=dfs(1);
	printf("%d",ans);
	return 0;
}
優先佇列寫法:
#include<cstdio>
#include<iostream>
#include<queue>
using namespace std;
typedef pair<int,int>pii;
const int Maxn = 1005,Maxk = 405;
int v[Maxn][Maxk];
int use[Maxn];
priority_queue<pii,vector<pii>,greater<pii> >q;
#define MK(a,b) make_pair(a,b)
#define Pf p.first
#define Ps p.second
int main(){
	freopen("robot.in","r",stdin);
	freopen("robot.out","w",stdout);
	int n,k,m;
	scanf("%d%d%d",&n,&k,&m);
	for(int i = 1;i <= n;++i){
		for(int j = 1;j <= k;++j)
		scanf("%d",v[i] + j);
	}
	for(int i = 1;i <= n;++i){
		q.push(MK(v[i][1],i));
		use[i] = 1;
	}
	int ans(0),rk;
	pii p;
	for(int i = 1;i <= m;++i){
		p = q.top();q.pop();
		ans+=Pf;
		rk = use[Ps];
		if(rk < k)q.push(MK(v[Ps][rk+1] - v[Ps][rk],Ps));
		++use[Ps];
	}
	printf("%d",ans);
	return 0;
}


相關推薦

MZ test17# NOIP模擬 #T3 3 登山機器人(robot.pas/cpp)

第3 題 登山機器人(robot.pas/cpp) 【問題描述】 登山機器人是一個極富挑戰性的高技術密集型科學研究專案,它為研究發展多智慧體系統和多機器人之間的合作與對抗提供了生動的研究模型。 登山機器人可以攜帶有限的能量。在登山過程中,登山機器人需要消耗一定能量,連續攀

Python每日一3:統計一個檔案中每個單詞出現的次數

題目: 統計一個檔案中每個單詞出現的次數,列出出現頻率最多的5個單詞。 前言: 這道題在實際應用場景中使用比較廣泛,比如統計歷年來四六級考試中出現的高頻詞彙,記得李笑來就利用他的程式設計技能出版過一本背單詞的暢銷書,就是根據詞頻來記單詞,深受學生喜歡。這就是一個把程式設計技能用來解決實際問

JZOJ5612. 【NOI2018模擬3.29】3

題意: 資料範圍: Analysis: 20分很顯然的設 f i

CCF CSP 2015年12月3 畫圖 (模擬+DFS或BFS)

問題描述 試題編號: 201512-3 試題名稱: 畫圖 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問題描述   用 ASCII 字元來畫圖是一件有趣的事情,並形成了一門被稱為 ASCII Art 的藝術。例如,下圖是用 AS

NOIP提高組3(1995-2018)

bbs problem .html 處理 2008年 fight 並查集 序列 子序列 NOIP提高組第3題(1995-2018) NOIP1996年提高組 第3題 挖地雷https://blog.csdn.net/qq_39670434/article/details/7

全排列(洛谷1061 Jam的計數法or NOIP 2006 普及組

div 順序 pre highlight 格式 其中 字符 是個 true Jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文字母計數,他覺得這樣做,會使世界更加豐富多彩。 在他的計數法中,每個數字的位數都是相同的(使用相同個數的字母),英文字母按

博弈論(noip普及組2010 三國遊戲)

三國 勝利 沒有 blog hang max efi () turn 小涵很喜歡電腦遊戲,這些天他正在玩一個叫做《三國》的遊戲。 在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 N 位武將(N為偶數且不小於 4),任意兩個武將之間有一個“默

LeetCode 3 (Longest Substring Without Repeating Characters)

sts mod while find his 代碼 key 不存在 簡單 LeetCode 第 3 題(Longest Substring Without Repeating Characters) Given a string, find th

liu_runda 給辣雞蒟蒻做的 NOIP模擬賽 1.0 第二 任(duty) 題解

cfa 由於 幹什麽 truct 失去 格子 ace ide ++ 問題 B: 任(duty) 時間限制: 2 Sec 內存限制: 512 MB 題目描述 liu_runda退役之後就失去夢想開始鹹魚生活了… Bilibili夏日畫板活動中,所有人都可以在一塊畫板上進

挑戰程序設計3.53 Dining

ostream ace code logs iostream names flow 分配 bool 題意:一個農場主有N頭牛,現在要給牛餵吃的,喝的。但是沒頭牛都有它自己喜歡的食物    和飲料。求最多能滿足多少頭牛的需求。(即:按照牛的意願分配食物) 思路:這個題一看

劍指offer3:從尾到頭打印鏈表

off 輸出結果 pre col 結構 ava image stack 鏈表 方法一:采用棧來存儲,用ArrayList保存。註意題目給出的輸出結果是ArrayList import java.util.ArrayList; import java.util.Sta

noip 模擬T3

mat long long ret math 發現 含義 答案 求解 遞歸 問:如何快速求出等差數列異或和? 玄學題... 對於異或運算,我們可以分開考慮每一位是1還是0,這樣會好做一些 於是我們發現,每一位是一還是0的判別式如下: 設讀入的數為x,y,z,等差數列共n項

ztz11的noip模擬T3:評分系統

程式碼: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define rii register int i #define rij re

墨者學院 - 密碼學加解密實訓-隱寫術(3)

實訓目標 1、瞭解檔案的格式; 2、瞭解隱寫術常見的幾種方法; 3、掌握隱寫工具“MP3Stego”的使用方法; 解題方向 分析圖片的檔案型別是否正常。 解題思路 開啟連結進入頁面 自然,下載得到一個壓縮包 解壓得到一張小姐姐圖片 winhex開啟 拉

墨者學院 - CMS系統漏洞分析溯源(3)

新雲網站內容管理系統是一套開源的WEB網站管理系統,採用目前非常成熟的ASP+Access/SQL開發而成。使用它,我們可以很方便的管理自己的網站,目前新雲網站內容管理系統最新的版本是v4.0.0 SP2。本文要介紹的捕洞就出在新雲網站內容管理系統v4.0.0 SP1以及未打官方最新補丁的v4.

無重複字元的最長子串-LeetCode-3-C++

題目:無重複字元的最長子串 題目描述:給定一個字串,找出不含有重複字元的最長子串的長度。   最長不重複子串可能有很多個,但是其長度只有一種。   方法一:暴力搜尋法   方法二:滑動視窗 雜湊表:要查詢一個元素,給定這個元素的關鍵字,根據雜湊函式(也稱雜湊函式)

OCP考試3

Your database is in ARCHIVELOG mode. You have two online redo log groups, each of which contains one redo member. When you attempt to start the databa

CMS系統漏洞分析溯源(3)

新雲網站內容管理系統是一套開源的WEB網站管理系統,採用目前非常成熟的ASP+Access/SQL開發而成。使用它,我們可以很方便的管理自己的網站,目前新雲網站內容管理系統最新的版本是v4.0.0 SP2。本文要介紹的捕洞就出在新雲網站內容管理系統v4.0.0 SP1以及未打