2019杭電多校訓練暑假第七次(未寫完)

2021-09-26 03:12:01 字數 904 閱讀 4325

1006:

解題思路:

這道題目我最開始的想法是去選k個開始,列舉到n,分別分配的時間是第一大 - 第(n - k + 1)大。然後去得到乙個函式,而這個函式剛好是雙鉤函式,然後求其最小值,由於精度損失,就去找第乙個m的約數,最後還是沒做出來。

後來看了題解,發現存在更簡單的做法。這個做法我覺得應該算是一種貪心吧。這道題讓我們從學生的角度去考慮如何分配時間使得在剛好做出k道題的前提下花費最小的時間。但是我們做題時可以從老師的角度去考慮,假如說乙個學生給每一道題都分配了時間,那麼如果這位老師想要不讓這位學生過掉k個題目,那麼她最優秀的方案是 :

選出這位學生分配時間最少的 (n - k + 1) 道題目,然後用在總量為m的前提下,去覆蓋掉這(n - k + 1) 道題目。

那麼什麼時候老師不能覆蓋完這最後的(n - k + 1)道題目呢,答案就是:我們在滿足給這最後(n - k + 1)道題目分配時間最少的前提下,給最後這幾道題目分配的時間之和為 m + 1。這樣老師就沒有辦法去讓學生最薄弱的這幾道題不過。

所以我們為了花費最少的時間,需要讓(m + 1)的時間 盡量平均的分配在(n - k + 1)這幾道題目上。

這樣算下來 總時間就應該為 :

m + 1 + (k - 1) * ( (m + 1) % (n - k + 1) ? (m + 1) / (n - k + 1) + 1 : (m + 1) / (n - k + 1) )

ac**:

#include #include using namespace std;

typedef long long ll;

int t, n, m, k;

int main(void)

// fclose(stdin);

return 0;

}

其他題目待補

2019杭電多校訓練(四)

把乙個數轉化成質因數加指數連乘的形式,求最小指數 當時我們考慮先篩出 1e18 的所有素數,複雜度大概在 2e8 左右,剛好被卡了 其實篩到 1e18 的情況也不是很複雜 當時以為四個因數太複雜了,沒敢寫 把小於 1e18 的質因子去掉,剩下的最多有四個質因子 如果m可以開四次根,那麼m一定是qqq...

2019杭電多校訓練(一)

刪除某些邊,讓 1 到 n 的最短路徑發生變化 刪除某條邊的費用是邊的長度 先用迪傑斯特拉跑一遍整個圖,滿足 dis a w dis b 的邊,肯定是最短路徑上的邊 選出這些邊,找到乙個最小割集,dinic比ek快很多,雖然漸進複雜度相同,都是 o nm 2 dinic加上弧優化後速度更快 incl...

第七次訓練 G題

問題簡述 給出一幅地圖,已知狗的起點s,終點門d的座標,門只在時間t開啟,而狗每次移動後,以前踏過的地板便會下沉消失 即不能走重複的路 問狗能否在指定的時間t到達門。問題分析 此題並非求最短路徑,因此用bfs並不合適,因bfs同時向多條路徑併發,容易影響到其他路徑的方向導致答案錯誤,若不標記路徑,又...