學姐去實習了, 一共實習了n天, 每一天都可以得到實習工資v[i], 這裡v[1..n]被看作是整數序列.
因為學姐很厲害, 所以v[1..n]是不下降的.
也就是說學姐每天的工資只會越來越多, 不會變少.
然而遺憾的是, 偷懶的學姐只記下來了其中m天的收入.
第a[1]天獲得了的工資為b[1].
第a[2]天獲得了的工資為b[2].
第a[3]天獲得了的工資為b[3].
...第a[m]天獲得了的工資為b[m].
其中a是遞增的.
好在她記下來了第一天和第n天的收入. 也就是說a[1]=1, a[m]=n.
現在實習結束了, 學姐看著僅有的m天的記錄, 希望知道:
(1)工資序列v[1..n]有多少種可能情況, 滿足已知的m條記錄. 答案mod 1000000009.
(2)平均來說(考慮所有可能的情況), n天中一共得到了多少工資, 答案四捨五入到小數點後第三位.
如果doc不能回答學姐的這兩個問題, 學姐會生氣的!
輸入資料第一行給定t, 表示總的詢問次數.
對於每一次詢問, 第一行給出兩個整數n和m.
第二行給出m個整數, 分別為a[1]到a[m].
第三行給出m個整數, 分別為b[1]到b[m].
對於每一次詢問, 首先輸出詢問的編號, 參見樣例輸出.
之後輸出問題1和問題2的答案, 用空格隔開, 詳細請參見樣例輸出.
26 51 2 3 5 6
3 5 10 20 20
6 61 2 3 4 5 6
3 5 10 15 20 20
對於30%的資料:case #1: 11 73.000case #2: 1 73.000
n <= 100.
對於60%的資料:
n <= 50000.
對於100%的資料:
2 <= n <= 1000000.
m <= 1000.
t <= 10.
1 = a[1] < a[2] < ... < a[m] = n.
0 <= b[1] <= b[2] <= ... <= b[m] <= 1000000.
題解:終於填了這個坑。。。
其實考場上因為沒時間所以打了暴力,大概因為乘法溢位爆零了。。。然後發現需要預處理n!以及n!的逆元,這不是很隨意嗎。。。
第一問用插板法算一下組合數,第二問我們可以認為b[i]到b[i+1]這裡面的每個數被選到的概率都是相等的,然後期望就是(b[i]+b[i+1])/2
然後注意乘法溢位就可以了(乘法溢位居然wa0了4次t_t)
**:
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #includeview code10 #include11 #include
12#define inf 1000000000
13#define maxn 2000000+5
14#define maxm 500+100
15#define eps 1e-10
16#define ll long long
17#define pa pair18
#define for0(i,n) for(int i=0;i<=(n);i++)
19#define for1(i,n) for(int i=1;i<=(n);i++)
20#define for2(i,x,y) for(int i=(x);i<=(y);i++)
21#define for3(i,x,y) for(int i=(x);i>=(y);i--)
22#define mod 1000000009
23using
namespace
std;
24 inline int
read()
2528
while(ch>='
0'&&ch<='9')
29return x*f;30}
31 ll fac[maxn+1],inv[2][maxn+1
];32
bool v[maxn+1
];33
int p[maxn+1
],tot,a[maxn],b[maxn];
34int
main()
3548
}49 inv[0][0]=inv[0][1]=1
;50 for2(i,2,maxn)inv[0][i]=(ll)(mod/i+1)*inv[0][i-mod%i]%mod;
51 fac[1]=inv[1][1]=1
;52 for2(i,2
,maxn)
5357
//for1(i,100)cout<58
int cs=read(),t=0;59
while(cs--)
6070
double sum=b[m];
71 for1(i,m-1)72
76 printf("
case #%d: %lld %.3lf\n
",++t,ans,sum);77}
78return0;
79 }
docker 19 03安裝部署,阿里源加速
部署docker最新版本,本技術文件以19.03為例子。如果需要最新版本的centos7的docker版本,那麼這個技術文件也是能夠幫助到你。docker所依賴的包環境,為了方便不報錯,推薦執行 yum config manager add repo 只需要再執行一下這條命令 yum config ...
洛谷 P1903 數顏色 分塊 bitset
題目鏈結 給你乙個數列代表不同的顏色 可以修改 詢問一段區間內有多少種顏色。很容易想到的就是線段樹來維護bitset。這裡為了練習,使用分塊維護bitset。事實上線段樹可以看成是無限分塊。修改的時候直接暴力將被修改位置所在的塊重新計算,形成新的bitset。查詢的時候,直接按塊合併bitset即可...
pip18 1公升級19 0 3 艱辛路程
今天準備把pip18.1公升級到19.0.3的,可是沒想到網上搜尋到的大多數方法都不管用,嘗試了n種分享的方法後,最後在pip官方 找到了正確的公升級方法。嘗試的方法有以下幾種 1 pip install upgrade pip 2 python m pip install upgrade pip ...