日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2.18比赛(T2,T3留坑)

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.18比赛(T2,T3留坑) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2.18比賽(T2,T3留坑)

pdf版題面

pdf版題解

?超越一切(ak)

【題目描述】

夏洛可得到一個(h+1)×(w+1)的巧克力,這意味著她橫著最多可 以切 h 刀,豎著最多可以切 w 刀 她想總共切 k 刀,每刀要么豎著切要么橫著切,如果豎著切了 i 刀,橫著切了 j 刀,會得到(i+1) ×(j+1)個巧克力,定義一個切 k 刀 的方案的代價是每一刀切完后巧克力個數之和,假設每刀切的位置是 隨機選擇的(即剩余能切的位置等概率隨機選一個),請你求出期望 代價,對109+7 取模

【輸入格式】

一行三個正整數 h,w,k

【輸出格式】

一行一個整數表示答案

【樣例 1 輸入】

2 1 2

【樣例 1 輸出】

666666677

【數據范圍】

本題有 6 個子任務,每個子任務只有 1 個測試點

對于 100%的數據,滿足 h,w≤ 1018,k≤h+w

Subtask 1[10 pts]: h,w≤300

Subtask 2[10 pts]:h,w≤5000

Subtask 3[30 pts]:h,w≤106

Subtask 4[25 pts]:k≤107

Subtask 5[15 pts]:k=h+w

Subtask 6[10 pts]:無特殊限制 選手文件夾下的額外樣例和最終數據范圍相同

?

sol:題解寫的非常好(大霧)

?

稍微解釋一下,對于每一個矩形,只對它左下角的那個點記錄貢獻

記錄的是中間的點的貢獻,就是不在邊界上的點,這樣的點共有h*w個,每個點切中的概率就是前面那個式子

然后因為這是每個點的期望,統計答案時要乘以h*w

還有邊上的點,對于最最左下角的點,k刀中每次切都會有1的貢獻,所以ans+k

還有不在左下角的點,每次切都會新產生一個會造成貢獻的點,ans+=(1+k)*k/2

標算已經在上面了,在貼一遍沒什么意思,放一份較易理解的75pts的暴力好了

?

?

#include <bits/stdc++.h> using namespace std; typedef long long ll; inline ll read() {ll s=0;bool f=0;char ch=' ';while(!isdigit(ch)){f|=(ch=='-'); ch=getchar();}while(isdigit(ch)){s=(s<<3)+(s<<1)+(ch^48); ch=getchar();}return (f)?(-s):(s); } #define R(x) x=read() inline void write(ll x) {if(x<0){putchar('-'); x=-x;}if(x<10){putchar(x+'0'); return;}write(x/10);putchar((x%10)+'0');return; } #define W(x) write(x),putchar(' ') #define Wl(x) write(x),putchar('\n') const ll Mod=1000000007; const ll N=20000005; ll h,w,k; ll Jiec[N],Niy[N]; inline void Ad(ll &x,ll y) {x+=y;x-=(x>=Mod)?(Mod):0;return; } inline ll Ksm(ll x,ll y) {ll ans=1ll;while(y){if(y&1) ans=ans*x%Mod;x=x*x%Mod;y>>=1;}return ans%Mod; } inline ll C(ll n,ll m) {if(!Niy[m]) Niy[m]=Ksm(Jiec[m],Mod-2)%Mod;if(!Niy[n-m]) Niy[n-m]=Ksm(Jiec[n-m],Mod-2)%Mod;return Jiec[n]*Niy[m]%Mod*Niy[n-m]%Mod; } int main() {freopen("ak.in","r",stdin);freopen("ak.out","w",stdout);ll i;R(h); R(w); R(k);Jiec[0]=1ll;for(i=1;i<=h+w;i++){Jiec[i]=Jiec[i-1]*i%Mod;}ll ans=0;ll NN=Ksm(C(h+w,2ll),Mod-2)%Mod;Ad(ans,C(k + 1,3ll)*NN%Mod);ans=ans*(h*w%Mod)%Mod;Ad(ans,(((1+k)*k)>>1)%Mod);Ad(ans,k);Wl(ans);return 0; } /* input 1 2 output */ 75pts暴力

?

附上ak王pfy的題解

轉載于:https://www.cnblogs.com/gaojunonly1/p/10408956.html

總結

以上是生活随笔為你收集整理的2.18比赛(T2,T3留坑)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。