PDSUACM第六次比賽B題(令人頭痛的題)

2021-10-02 23:33:09 字數 2066 閱讀 5805

最近,瓦西亞決定提高他的手槍射擊技能。今天,他的教練為他提供了以下鍛鍊。他在桌子上連續放置了n個罐頭。罐從1到n從左到右編號。 vasya必須將每個罐子擊倒一次才能完成練習。允許他選擇將罐子打倒的順序。 vasya知道ii罐的耐久性是ai。這意味著,如果vasya已經將x罐擊倒,並且現在準備開始射擊第i罐,那麼他將需要(ai⋅x+ 1)槍才能將其擊倒。您可以假設,如果vasya開始射擊ii-罐,他將一直射擊直到將其擊倒。 您的任務是選擇這樣的射擊順序,以使將給定的n個罐中的每個精確擊倒一次所需的射擊次數最小化。

輸入

輸入的第一行包含乙個整數nn(2≤n≤1000)-罐數。 輸入的第二行包含序列a1,a2,…,ana1,a2,…,an(1≤ai≤1000),其中ai是第i個罐的耐用性。

輸出

在第一行列印中,將給定的n個罐中的每乙個準確地擊倒一次所需的最少射擊次數。

在第二行列印中,由n個從1到n的整數組成的序列-罐的索引順序使所需的注射次數最小化。如果有多個答案,則可以列印其中任何乙個。

examples

input

320 10 20

output

431 3 2

input

410 10 10 10

output

642 1 4 3

input

65 4 5 4 4 5

output

696 1 3 5 2 4

input

21 4

output

32 1

注釋

在第乙個示例中,vasya可以從第乙個罐頭開始射擊。他以第一槍將其擊倒,因為他之前沒有擊倒任何其他罐頭。之後,他必須射擊第三罐。為了擊倒它,他射擊了20⋅1+ 1 =21次。在那之後僅剩一秒鐘。瓦薩亞擊倒它的次數是10⋅2+ 1 =21次。因此,總拍攝數量為1 + 21 + 21 = 43。 在第二個示例中,拍攝順序無關緊要,因為所有罐子都具有相同的耐用性。

這道題當時繞了我好久,得有半個小時啊啊啊啊,交錯了四次,搞得我很崩潰。

#include

#include

#include

// *start on @date: 2020-02-14 14:20

using

namespace std;

typedef

long

long ll;

typedef

unsigned

long

long ull;

int maxn =

-999999

;int minn =

999999

;int

main()

;int x[

1001]=

; j=m;

while

(m--

)int flag[

1001]=

; n=0;

int p =0;

for(i=

1000

;i>=

0;i--)if

(s[i]!=0

)}s[i]--;

break;}

k =1;

for(i=

1000

;i>=

0;i--)}

s[i]--;

sum = sum +

(k*i+1)

; i++

;k++;}

} cout << sum+

1

0;i) cout

}

第六次訓練 H題

問題簡述 可樂的體積為s,同時有容量m,n s n m 的兩個杯子,三個容器間可相互倒可樂,問能否得到兩杯體積相等的可樂,若能,則輸出最短步驟數。問題分析 遵循無刻度的倒水原則,s為奇數時必然不行,可以先剪枝剪掉。而三個杯子的倒水方向可以有6種,可以使用bfs向六個方向搜尋,尋找最短路徑,當三個容器...

第六次訓練 J題

問題簡述 有一塊草坪長為l,寬為w,同時有n個噴頭,給出噴頭的位置 距離草坪左端的距離 與噴頭噴灑的範圍,問噴頭的範圍能否覆蓋整塊草坪,若能,輸出要開的最少噴頭數,若不能,輸出 1。問題分析 典型的區間覆蓋問題。但該問題為二維問題,難度在於如何將二維問題轉化為一維問題,從而用簡單的一維區間覆蓋解決問...

第六次作業

姓名 陳裕坤 學號 120705213 班級 12電信2班 作業1 總結,到目前為止,c語言基礎知識已介紹完,下一階段重點是指標。請從以下幾個方面小結 1.程式設計重在實踐,多程式設計才會對其理解更深,我是如何學習c語言的?2.程式設計涉及到方方面面知識,就像英語單詞一樣,一開始不可能了解每個c元素...