PAT甲級真題1044 火星購物

2021-10-18 04:48:44 字數 2341 閱讀 7189

在火星購物是乙個完全不同的體驗。

火星人用被鍊子連在一起的鑽石付款,每顆鑽石都有一定的價值。

付款時,只能在鏈條的某一位置上切割一次,然後一些鑽石就會乙個接著乙個的從鏈條上脫落。

一旦鑽石脫離鏈條,就不能在穿回去。

例如,如果我們有乙個鑽石鏈條,上面有 8 顆鑽石,價值分別為 3,2,1,5,4,6,8,7元,而我們需要支付的**為 15 元。

我們有三種選擇:

在 4 和 6 之間剪斷鏈條,然後取走前 55 顆鑽石,價值為 3+2+1+5+4=15。

在 5 之前或 6 之後剪斷鏈條,然後取走第 4∼6 顆鑽石,價值為 5+4+6=15。

在 8 之前剪斷鏈條,然後取走後 2 顆鑽石,價值為 8+7=15。

現在給定鑽石鏈條上鑽石的價值以及顧客需要支付的價錢,請你幫助顧客確定他有多少種選擇方案。

如果無法恰好湊出顧客需要支付的確切金額,那就湊出足夠支付的情況下的最少金額,從而避免鑽石浪費。

輸入格式

第一行包含兩個整數 n 和 m,分別表示鏈條上的鑽石數量以及顧客需要支付的金額。

第二行包含 n 個整數,d1,d2,…,dn,表示鑽石的價值。

輸出格式

每行輸出一種可行方案,具體格式為 i-j,表示 di+…+dj=mdi+…+dj=m。

如果方案不唯一,則按照 ii 遞增的順序輸出所有方案。

如果無法準確湊出 m,仍然輸出 i-j,表示 di+…+dj>m 並且 di+…+dj−m 的值最小。

如果方案不唯一,則按照 i 遞增的順序輸出所有方案。

資料範圍

1≤n≤105

,1≤m≤108

,1≤di≤103

∑di≥m∑di≥m

輸入樣例1:

161532

1546

871610

1511912

1413

輸出樣例1:1-

54-6

7-811

-11輸入樣例2:513

2457

9輸出樣例2:2-

44-5

#include

#include

using

namespace std;

const

int n =

100010

, inf =

1e9;

int n, m;

int s[n]

;int

main()

int res = inf;

for(

int i =

1, j =

0; i <= n; i ++

)for

(int i =

1, j =

0; i <= n; i ++

)return0;

}

#include

#define x first

#define y second

using

namespace std;

typedef pair<

int,

int> pii;

int n,m,maxsum=int_max;

intmain()

;//表示給定的一組數中第1個數到第i個數的和,a[0]=0

vectorv;

//儲存加和最小且要大於m的一串數字的首尾位置

for(

int i=

1;i++i)

int flag=0;

for(

int i=

0;i++i)

else

if(a[j]

-a[i]

>m&&a[j]

-a[i]

//將當前這一串數字的首尾位置加入vector中

}else

if(a[j]

-a[i]

>m&&a[j]

-a[i]

==maxsum)

//如果a[j]-a[i]>m&&a[j]-a[i]==maxsum

v.push_back()

;//將當前這一串數字的首尾位置加入vector中}if

(!flag)

//flag==0,表示沒有找到總和等於m的一組數字,輸出vector中的數字

for(

int i=

0;isize()

;++i)

printf

("%d-%d\n"

,v[i]

.x,v[i]

.y);

return0;

}

1044 火星數字 20 PAT乙級真題

火星人是以13進製計數的 地球人的0被火星人稱為tret。地球人數字1到12的火星文分別為 jan,feb,mar,apr,may,jun,jly,aug,sep,oct,nov,dec。火星人將進製以後的12個高位數字分別稱為 tam,hel,maa,huh,tou,kes,hei,elo,syy...

1044 火星數字 20 PAT乙級真題

火星人是以13進製計數的 例如地球人的數字 29 翻譯成火星文就是 hel mar 而火星文 elo nov 對應地球數字 115 為了方便交流,請你編寫程式實現地球和火星數字之間的互譯。輸入格式 輸入第一行給出乙個正整數n 100 隨後n行,每行給出乙個 0,169 區間內的數字 或者是地球文,或...

PAT甲級真題1153

pat 准考證號由 44 部分組成 第 11 位是級別,即 t 代表頂級 a 代表甲級 b 代表乙級 第 2 42 4 位是考場編號,範圍從 101101 到 999999 第 5 105 10 位是考試日期,格式為年 月 日順次各佔 22 位 最後 11 1311 13 位是考生編號,範圍從 00...