2019暑假多校訓練第七場 部分題解

2021-09-26 03:30:38 字數 1350 閱讀 2711

這一次是華東師範大學出的題目

出題人說 一不小心出成了 沒人ac數量最多的一場多校

我最開始看的就是e題 想了好久 以為自己找到規律了 (其實並沒有)到比賽結束也沒人a這題

靠川醬carry全場

大意:一共有n道題目,總分為m,學生為了得到x分的成績需要學習x+1小時,他需要對k道題目,求他最少複習多少時間。

不知道每道題目對應的分值,可以先假設,k-1道題目的分數都是 0 分,

那麼他需要再對一道題目就可以了

用 m+1 的時間複習 (n-k+1)道題目,其中每道題目的複習時間為(m+1)/(n-k+1)

剩下的 k-1 題所用的時間必須比(n-k+1)所需的時間多 所以是(m+1)/(n-k+1)*(k-1)

還有一題的分值必須比 m 分多 所以需要(m+1)

參考:

#include #include using namespace std;

int mod = 1e9 + 7;

#define ll long long

int main()

ll ans = p * (k - 1) + m + 1;

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

}return 0;

}

題目大意:對於每乙個等級,可以花 ai 元,有 ri/si 概率公升級,如果公升級失敗就退到xi級,問從 l 級公升到 r 級的錢數期望每一級都有成功和失敗兩種可能

需要判斷在 i 級公升級失敗時退到 xi 級時 需要多少再回到 i 級

得到下列式子

左右兩邊化簡 可得

**如下:

#include #include using namespace std;

int mod = 1e9 + 7;

#define ll long long

ll dp[1000005];

ll quickpow(ll x, ll n)

res = (res % mod) * (res % mod);

n = n >> 1;

}return ans;

}int main()

for (int i = 0; i < m; i++)

}return 0;

}

ps:要注意加減的時候要先加上模數在取模後來寫了題解:

2019暑假多校訓練第二場 部分題解

這次沒有爆零 有點感動 題目大意 有乙個數x 在範圍0 2 n 1 內 詢問 乙個數 y 給出答案 x y y 可以詢問多次 詢問之後 一起給出回答 可以簡單證明得到 範圍是 0 2 n 1時 需要n個數得到最小的方案數 因為兩個方案的詢問次序不同可算作兩種方案 所以 答案是 n ps 當n 100...

2019牛客暑期多校訓練營(第七場)

b題 示例1輸入22 1 2 1 21 0 1 輸出no yes就差一點點就打出來了嚶嚶嚶 include include include include include define ll long long using namespace std intmain else if n 1 else...

2019牛客暑期多校訓練營(第七場)H Pair

數字dp。這次是針對 和 的,所以數字變成了二進位制位數。針對二進位制從高到低位進行搜尋即可。include include include include include include include include include include include include include...