時間限制: 3 sec
記憶體限制: 128 mb
提交: 60
解決: 13 [
提交][
狀態][
討論版]
qaq有乙個序列,元素個數有n
n個。
他認為乙個序列的價值的是:該序列中不同元素之和。
比如說:序列(1,
1,2,
2)(1,1,2,2)
價值為3
3。 現在qaq想知道所有子串行的價值之和。
第一行輸入乙個整數t
t,代表有t
t組測試資料。
每組資料佔兩行,第一行輸入乙個整數n
n,代表序列元素個數。
接下來一行輸入n
n個整數a
a。注:1
<=
t<=
10000,1
<=
n<=50,
1<=a[
]<=
10 1<=t<=10000,1<=n<=50,1<=a<=10
。對每組測試資料,輸出乙個整數代表所有子串行價值之和。
結果很大,請對(109
+7) (109+7)
取餘。
231 1 1
410 10 10 8
7對於第二組測試資料一共有15204
15個子序列:(10
)、(10
)、(10
)、(8
)、(10
,10)、
(10,10
)、(10
,10)、
(10)、(10)、(10)、(8)、(10,10)、(10,10)、(10,10)、(10
,8)、
(10,8
)、(10
,8)、
(10,10
,8)、
(10,10
,8)、
(10,8)、(10,8)、(10,8)、(10,10,8)、(10,10,8)、(10
,10,8
)、(10
,10,10
)、(10
,10,10
,8) (10,10,8)、(10,10,10)、(10,10,10,8)
。價值之和為204
204。
czy
題解(czy):
標程應該是這樣的,我們用狀態壓縮的方法記錄每個元素的情況。
記num[i]是i元素出現的次數。
然後列舉每乙個狀態,共有(1<<10) - 1共1023種狀態。
對於狀態s而言,若出現n個元素,那麼它們的組合方案就是
cnt = (2^num[i] - 1) * (2^num[i+1] - 1) * ... *(2^num[n] - 1)。
狀態s的貢獻就是出現的不同元素和sum 乘上 組合方案cnt。
我們累加貢獻即可。
注意1 << x的時候,如果爆int的話,要這樣寫1ll << x。
ac**:
#include#includetypedef long long ll;
const int mod=1e9+7;
////ll pow_mod(ll base,ll y,ll mod)
// // return ans;
//}
int main()
}ans=(ans+times*tota%mod)%mod;
} printf("%lld\n",ans);
} return 0;
}
HPU 1010 QAQ的序列價值
1010 qaq的序列價值 時間限制 3 sec 記憶體限制 128 mb 提交 60 解決 13 提交 狀態 討論版 題目描述 qaq有乙個序列,元素個數有n 個。他認為乙個序列的價值的是 該序列中不同元素之和。比如說 序列 1,1,2,2 價值為3 現在qaq想知道所有子串行的價值之和。輸入 第...
HPU 1009 QAQ的區間價值
1009 qaq的區間價值 時間限制 1 sec 記憶體限制 128 mb 提交 75 解決 49 提交 狀態 討論版 題目描述 qaq有乙個整數序列,元素個數有n 個,分別為1,2,3 n 1,n。假定用陣列a來依次記錄n個元素,那麼區間 i,j 的價值 sum i,j check i,j 其中s...
hpu 1012 QAQ的區間統計
時間限制 1 sec 記憶體限制 128 mb 提交 142 解決 42 提交 狀態 討論版 qaq有乙個區間 l,r 已知qaq很喜歡長度為奇數的區間,現在請你告訴他有多少個長度為奇數的子區間。對於區間 2 4 來講,它的子區間有 2 2 2 3 2 4 3 3 3 4 4 4 共6個。為了簡化題...