c題也是好題啊
暴力水過之後 又重判了 額 有點悲哀 不過這也是一種 一種學習的機會啊 哈哈 廢話不多說了
題目是這樣的 :
c.孟婆湯
time limit: 1000 ms
memory limit: 32768 k
total submit: 48 (19 users)
total accepted: 5 (5 users)
special judge: no
description
男從戎,女守家。一夜,狼煙四起,男戰死沙場。從此一道黃泉,兩地離別。最後,女終於在等待中老去逝去。逝去的最後是換盡一生等到的相逢和團圓。
某日兩人至奈何橋前,服下孟婆湯。
每滴孟婆湯都有強度不一的藥效,設一碗孟婆湯共n滴(0
<n<100000)
,其中第i滴(
0≤i<
n)用b[i]
表示。孟婆湯的藥效與原料有關,設熬制前同樣有n
滴原料,第
i滴原料用
a[i]
表示,0
≤a[i]
<2^32
。藥效b[i]
的計算方法為
b[i]=(a[0]*a[1]*...*a[n-1]/a[i])%m
(假設0/0=1),0
<b[i]
<2^32
。input
多組輸入資料。
每組第一行給出原料數量n
,取模數
m,緊接著的一行按順序給出原料
a[i]
。output
求出熬製所成每份孟婆湯的藥效b[i]
,每份之間用空格隔開,每組資料之後以換行結尾。
sample input
5 11
2 7 5 3 9
3 79 8 5
sample output
10 6 4 3 1
5 3 2
第一眼我們就能看出來 b[i]
就是除了
a[i]
項之外所有的項相乘;
腫麼辦??
求每個元素都便利一遍?肯定是不行的時間複雜度o
(n*n
) 額……
所以肯定不能那麼暴力
不過 我們這樣想 b[i]
不就是前面的乘積乘上後面的乘積嗎 就差一點就找到出路了
是不是很興奮 啊啊啊啊啊 是啊
我們可以開兩個陣列 :
第乙個陣列 第i
項表示前
i項的乘積
的二個陣列 第i
項表示i+1
項到最後一項的乘積
問題迎刃而解 時間複雜度完全降下來
是不是很開森吶 是啊
那我們用**來實現吧:
#include
#include
using namespace std;
long long int a[100001];
long long int start[100001],end[100001];
int main()
end[n+1]=1;
for(int i=n;i>=1;i--)
coutcout<<" "<<(start[i-1]*end[i+1])%mod;
cout<}
return 0;
}///**沒有註解 主要是理解 思路 思路理解 **便是傻瓜**了
分類: 筆試題2012-08-07 23:07 2278人閱讀
測試給定乙個陣列a[n],我們希望構造陣列b [n],其中b[j]=a[0]*a[1]…
a[n-1] / a[j],在構造過程中,不允許使用除法:要求o(1)空間複雜度和o(n)的時間複雜度;除遍歷計數器與a[n] b[n]外,不可使用新的變數(包括棧臨時變數、堆空間和全域性靜態變數等)
解析:設b[0]=1
由b[i]=b[i-1]*a[i-1]可得
b[1] = a[0]
b[2] = a[0]a[1]
…b[i] = a[0]a[1]a[2]…
a[i-1]
…b[n-1] = a[0]a[1]…
a[n-2]
那麼再通過b[0]這個變數來迭代出1, a[n-1], a[n-2]a[n-1], a[n-3]a[n-2]a[n-1], …
, a[1]a[2]a[3]
…a[n-1],迭代過程中分別乘以b[n-1], b[n-2], …
, b[0]
**如下
1 for (int i = 1; i <= n-1; i++)
2
5
6 for (int i = n-1; i >= 1; i--)
7
一月17日新生冬季練習賽解題報告H 龜兔賽跑
h是最後加上的乙個題 看起來很厲害還5秒 其實如果做過類似的題的話就一點都不難了 今天的比賽就從最後加上的h 題開始寫吧 h.龜兔賽跑 time limit 5000 ms memory limit 65536 k total submit 12 9 users total accepted 3 3...
一月24日新生冬季練習賽解題報告C 極差
c.極差 time limit 1000 ms memory limit 32768 k total submit 22 18 users total accepted 18 18 users special judge no description 小輝是個頑皮的胖孩紙,總愛在老師的黑板上亂塗亂畫...
一月24日新生冬季練習賽解題報告A 通報批評
a題太水了解題沒啥意思 我用的佇列模擬 讀入乙個名字和數,數是0就輸出名字 然後完事了 include int main printf n a.通報批評 time limit 1000 ms memory limit 32768 k total submit 204 68 users total a...