zoj3891 2017CCPC秦皇島站A

2021-10-25 06:43:23 字數 1073 閱讀 7699

n支隊伍,一張桌子有m個座位順時針編號1~m。p個預言。預言a隊伍在b時刻ac一道題目。機械人每個時刻都順時針走一步,有需要氣球的就發。每支隊伍,ac後多少時刻沒收到氣球就有多少不開心的值,問機械人起始位置在**可以使得總的不高興值最小。輸出最小的不高興值。

n 1e5  m 1e9 ,robot的可能出發位置一定是在這1e5個之內,就是當它到某個隊伍可以恰好給這個隊伍氣球的時候,這個位置一定是其中之一。

可以將所有隊伍的ac時間等價到一支隊伍上,例如第一支隊伍位置p1,a題時間為a,第二支隊伍位置是p2,a題時間為b,那麼其實可以轉化為第一支隊伍ac另外一道題的時間是 b-(p2-p1),這裡注意考慮取模!

假設機械人從第一支隊伍的位置出發,當b不為0時,那麼每次答案都需要加上(m-b) b為a題的時間。//繞一圈回來 等待時間+(m-b),對於假設從pos[1]出發的ans求解o(n),如果對每個位置都這樣求->o(n^2)炸了嗚嗚嗚。

所以對於這n個可能的起始位置,我們可以做到每次o(1)轉移得到相應答案 再取min,怎麼轉移呢?

對於前面求出的每乙個b(對映的ac時間)從小到大列舉,->機械人起點變化

ans += p * (現在的位置 - 上乙個);//所有點都加上這一段的時間

ans -= m * b;//剛好在這兒的點減掉乙個輪迴

答案取min,nice~

#include#include#include#include#includeusing namespace std;

const int maxn = 1e5 + 5;

typedef long long ll;

int t,a,b,n;

ll m,p;

int pos[maxn];

ll ans = 0ll;

mapmp;

int main()

ll ans = ans;

int lst = 0;

for(auto it = mp.begin();it != mp.end(); it++)

printf("%lld\n",ans);

} return 0;

}

2017 ccpc秦皇島站總結

第一次參加區域賽,內心還是有點小激動的。去到的第一天霧霾有點大,但是第二天霧霾就被吹走了,空氣還是很不錯的。第一天,因為知道學校靠海,就和隊友和東慶隊伍,去了一趟海邊看看海,也是挺不錯的體驗。還有就是,午飯不是固定的快餐之類的,是自己選擇的,而且資金很充足,這點非常棒,還有很多看起來很好吃的,唯一可...

2019CCPC秦皇島站後記

前 時隔一年又來了秦皇島,這次吸取了上一次訂賓館的教訓,換了一家網上看起來挺好看的賓館,然後剛進門我就傻眼了。day1.早上三點半起來趕上海飛秦皇島的飛機,一上飛機我就睡著了,醒過來的時候發現昨晚通宵的jls已經開啟了電腦,果然真正的神仙都是不需要睡覺的 熱身賽比較快樂,簽完到之後發現d是列舉答案,...

2018CCPC秦皇島站(賽後總結)

這大概是我的最後一場acm競賽了,我們長途跋涉來到秦皇島參賽,然而表現的一點兒也不好。9.27號的熱身賽共有四道題,熱身賽估計有點難,第二名也就只做了兩題。我們只做出了一道題,不過第二題我們在比賽結束後,和趙老師討論出了這道題的解法,賽場上我們是用迴圈暴力求解的,複雜度是o n 3 o n o n3...