1. 程式人生 > >dp 電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。

dp 電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define N 1005

using namespace std;

int w[N],v[N];
int dp[N][N];

bool cmp(int a,int b)
{
	return a>b;
}

int main()
{
	int i,j,n,m;
	while(scanf("%d",&n)!=EOF)
	{
		if(n==0) break;
		int maxx=-1;
		memset(dp,0,sizeof(dp));
		memset(w,0,sizeof(w));
		memset(v,0,sizeof(v));
		for(i=1;i<=n;i++) scanf("%d",&w[i]);
		sort(w+1,w+n+1,cmp);
		for(i=1;i<=n;i++)
		{
			v[i]=w[i];
		}
		//for(i=1;i<=n;i++) printf("%d ",w[i]);
		//printf("\n");
		maxx=w[1];
		scanf("%d",&m);
		int maxv=m-5;
		for(i=0;i<=maxv;i++) dp[0][i]=0;
		/*for (int i=1; i<=n; i++)
		for (int j=1; j<=maxv; j++)
		{
			if (w[i]<=j)
			{
				dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
			}
			else
				dp[i][j]=dp[i-1][j];
		}*/
		if(maxv<0){
			printf("%d\n",m);
			continue;
		}
		for(i=2;i<=n;i++)
		{
			for(j=maxv;j>=w[i];j--)
			{
				dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
			}
			for(j=w[i]-1;j>=0;j--)
			{
				dp[i][j]=dp[i-1][j];
			}
		}
		printf("%d\n",m-dp[n][maxv]-maxx);
	}
}

電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買一個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功(即使購買後卡上餘額為負),否則無法購買(即使金額足夠)。所以大家都希望儘量使卡上的餘額最少。  某天,食堂中有n種菜出售,每種菜可購買一次。已知每種菜的價格以及卡上的餘額,問最少可使卡上的餘額為多少。 
Input多組資料。對於每組資料: 
第一行為正整數n,表示菜的數量。n<=1000。 
第二行包括n個正整數,表示每種菜的價格。價格不超過50。 
第三行包括一個正整數m,表示卡上的餘額。m<=1000。 

n=0表示資料結束。 
Output對於每組輸入,輸出一行,包含一個整數,表示卡上可能的最小余額。 Sample Input
1
50
5
10
1 2 3 2 1 1 2 3 2 1
50
0
Sample Output
-45
32
思路:先找到一個最貴的菜唄,最後在快沒錢的時候再買它。
剩下的就是一個很裸的揹包問題.
程式碼:
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#define N 1005usingnamespacestd;int w[N],v[N];int dp[N][N];bool cmp(int a,int b){return a>b;}int main(){int i,j,n,m;while(scanf(
"%d",&n)!=EOF){if(n==0) break;int maxx=-1;memset(dp,0,sizeof(dp));memset(w,0,sizeof(w));memset(v,0,sizeof(v));for(i=1;i<=n;i++) scanf("%d",&w[i]);sort(w+1,w+n+1,cmp);for(i=1;i<=n;i++){v[i]=w[i];}//for(i=1;i<=n;i++) printf("%d ",w[i]);//printf("\n");maxx=w[1];scanf("%d",&m);int maxv=m-5;for(i=0;i<=maxv;i++) dp[0][i]=0;/*for (int i=1; i<=n; i++)for (int j=1; j<=maxv; j++){if (w[i]<=j){dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);}elsedp[i][j]=dp[i-1][j];}*/if(maxv<0){printf("%d\n",m);continue;}for(i=2;i<=n;i++){for(j=maxv;j>=w[i];j--){dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);}for(j=w[i]-1;j>=0;j--){dp[i][j]=dp[i-1][j];}}printf("%d\n",m-dp[n][maxv]-maxx);}}

相關推薦

dp 電子科大本部食堂詭異設計購買之前判斷餘額

#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #define N 1005 using namespace std;

張書樂:原創叫山寨網文江湖為什麽總是抄襲者成功?

網絡文學尤其是網絡小說開始IP化,並在影視、遊戲和其他周邊產業鏈上發力,動輒數千萬的簽約量下,其實網文平臺不僅對於那些抓取付費內容的盜版者睜一只眼閉一只眼,以期獲得IP影響力的最大化。文/張書樂(人民網、人民郵電報專欄作者)新著有《微博運營完全自學手冊》據媒體報道,近年來,多部由網絡小說改編的影視劇播出後,原

技術叫人工智慧崛起叫人工智慧Ready?

人工智慧的優勢與潛能 西班牙皇家埃爾卡諾研究所網站發表的文章《人工智慧與權力》指出,人工智慧的最大優勢在於它能夠解決人類能力有限的複雜問題。面對真真假假的海量資料,人類已沒有能力用這些資料確定關係、模式,或者進行推論和預測,因為這些都需要擁有強大的計算能力。 德國《國際政治》雙月刊發表的文章

Block 叫 Callback Callback 叫 CompletionHandler

【引言】iOS10推送部分的API,大量使用了 CompletionHandler 這種命名方式,那麼本文我們將對比下這種 Block 的特殊性,以便更好的理解和在自己的專案中實踐 CompletionHandler 樣式的 Blcok。 正文 我們作為開發者去整合一個 Lib

u013268685的專欄(幸福叫AC期待叫AK)

Speakless很早就想出國,現在他已經考完了所有需要的考試,準備了所有要準備的材料,於是,便需要去申請學校了。要申請國外的任何大學,你都要交納一定的申請費用,這可是很驚人的。Speakless沒有多少錢,總共只攢了n萬美元。他將在m個學校中選擇若干的(當然要在他的經濟承受範圍內)。每個學校都有不同的申請

阿里幫吃貨工程師食堂玩起了“黑科技”

大家好,我叫宋爽,是一位阿里工程師。(今天阿里妹休假了,我來頂班,嘿嘿~)別的工程師,喜歡摁鍵盤

設計 MySQL 數據表的時候一般都列為自增 ID這樣設計原因是什麽什麽好處?

數據表 問題 innodb unique uuid 定義 記錄 原因 指向 知乎采集: MyISAM/InnoDB默認用B-Tree索引(可理解為"排好序的快速查找結構")。 InnoDB中,主索引文件上直接存放該行數據,稱為聚簇索引。次索引指向對主鍵的引用;MyISA

感動叫ACM(記WJMZBMR在成都賽區開幕式上的講話)

我的朋友 OS div 以及 主題 教練 聊天 andro 一起 各位選手,各位教練,大家好,我是來自清華大學交叉信息學院的陳立傑,今天很榮幸站在這裏代表全體參賽選手發言。對於我來說,這是我第一次正式參加ACM的比賽。不過我跟ACM之間的緣分,大概在很早的時候就已經存在了

天生的不合小猛拉維加斯龍虎開戶

小猛拉維加斯龍虎開戶1生命是一個,花開花落漸行漸遠的過程小猛拉維加斯龍虎開戶15608835553。有些人從你生命中路過,給你一個風景如畫的美好。從此你們情投意合知無不言走過山走過水,看一段人生的浮華懂一場平淡的春秋,至此多年以後有些人離開了。你以為這就是所謂的人生,其實不

尊重叫回復

web 公司 簡單的 素質 結果 時代 機會 login 3-9 有一種尊重,叫做“收到請回復” “收到請回復!” 隨著時間的推移, 越來越多的人開始忽視這句話, 可能是習慣了, 覺得無所謂了, 可能是選擇忽視它, 覺得沒有消息就是最好的消息, 對於發布消息的人而言,

球員都名字叫迷信

聯系 有一種 break 種類 word-wrap 點球 padding 細節 有關 無論是世界杯這等全球頂級賽事,還是各個國家各個級別的聯賽,為了贏球,從簽約補強到教練戰術布置,從球員技術訓練到日常飲食,俱樂部可以說做得是面面俱到,保證萬無一失。但是很多情況下,還是會百密

次接口設計

更多 ould out count 兼容性 互調 java num col 小李最近手頭在做的task,需要暴露新的接口出去給客戶。 ========================我是正文分割線============================= <<&

心酸叫做程序員選錯了平臺

老師 學員 人生 事業 ext 如果 系統 什麽 code 昨天做線下咨詢時,分析完來訪者的測試結果,我說:“現在的崗位,其實限制了你的發展。”這位學員點了點頭:“其實做咨詢前,沒怎麽覺得現在的公司,限制了我發展,根本沒意識到”。我說,等你意識到,問題就嚴重了。他瞪了一下眼

叫做AG真人視訊遊戲的技巧攻略玩法 【唯一首選】

的人 運動員 一個 管理 概率 誠信 我只 什麽 自由飛翔 1、ag進場時先冷靜一下,準備戰鬥時先考慮自己的時間是不是充足。時間要以1小時以上為準,同時考慮身邊是否有什麽幹擾。如果天時地利都不好,不要進場。2、進場時,總體觀察一下牌局,選擇好新開的局,進去了以後要耐心等待牌

成熟叫沈默

alt 多說 成年人 color 容易 text 喜歡 見證 對策 成熟, 和年齡大小無關, 和脾氣好壞無關, 成熟, 不是寫在臉上的表情, 而是藏在心裏的淡定。 有些人,看似成熟。 大事面前,驚慌失措; 小事面前,斤斤計較。 遇到麻煩,就手忙腳亂; 有了矛盾,就捶胸頓

悄悄告訴你在矽谷工作比程式設計師掙得多

不管在上地、南山還是矽谷,程式設計師從來都是高薪的代名詞。即使是兩年前,矽谷的實習工程師的年薪就已經達到了81600美元(超過人民幣56萬),相當於美國平均工資的兩倍。 不過,程式設計師並不是美國科技公司裡薪資最高的工種。 產品錦鯉年薪百萬 招聘網站Hired根據其平臺上以美國為主的諸多

程式設計師的浪漫叫做程式為你宕過機

10月17日,YouTube視訊網站出現全球大宕機,而這次宕機事件的影響蔓延到世界各地。即便是需要翻牆才能開啟YouTube視訊網站的國內,這條訊息的熱度也依然衝上了新聞排行榜。 宕機開始於美國東部時間週二晚上9點,當時有使用者開始報告網站出現問題。隨即,YouTube團隊釋出了一條推特,但並未

韓春雨事件再反思:私慾叫“不求功利”

阿里巴巴官方釋出微博稱,連續幾日,一篇名為《阿里員工透露:馬總早移走 1200 億人民幣!網友:不愧是老師》的文章被有組織的進行惡意傳播。阿里巴巴官方釋出微博稱,連續幾日,一篇名為《阿里員工透露:馬總早移走 1200 億人民幣!網友:不愧是老師》的文章被有組織的進行惡意傳播。 對此,阿里表示,該文完全捏造事

是否方法可以禁用jQueryDataTables的初始排序

摘自別處,為防止刪帖,此處做記錄 我用的是jQuery DataTables外掛。從官方API中可以看到: 如果啟用了排序,那麼DataTables將在初始化時執行第一遍排序。可以使用此變數定義對哪一列執行排序,以及排序方向。aaSorting陣列應該包含要排序的每個列的陣列,最初包

正能量觸動你的心靈讀劉丁寧的封信

劉丁寧,女,2013年和2014年兩屆 遼寧省高考文科 狀元。 2013年高考,劉丁寧考出了668(含加分10分)分,為遼寧高考文科狀元。被香港大學以全額獎學金錄取。2013年10月,劉丁寧離開香港大學重回母校(