Hdu 5496 Beauty of Sequence (组合数)

题目链接:

  Hdu 5496 Beauty of Sequence

题目描述:

  一个整数序列,除去连续的相同数字(保留一个)后,序列的和成为完美序列和。问:一个整数序列的所有子序列的完美序列和?

解题思路:

  考虑位于i位置数字x的贡献值,假设x是子序列中连续相同数字的第一个,那么x对于i后面的数有2(n-i)个贡献值,对前面的数,要么不选取,要么选取结尾不为x的方案数目。

 #include <map>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; typedef long long LL;
const LL maxn = ;
const LL mod = ;
LL a[maxn];
map<LL, LL>M; int main ()
{
LL t, n;
scanf ("%lld", &t); while (t --)
{
scanf ("%lld", &n);
for (int i=; i<n; i++)
scanf ("%lld", &a[i]); LL sum, cnt, num;
sum = cnt = ;
M.clear(); for (int i=; i<n; i++)
{
num = (cnt + - M[a[i]] + mod) % mod;
sum = ( * sum % mod + num * a[i] % mod) % mod;
M[a[i]] = (M[a[i]] + cnt + ) % mod;
cnt = (cnt * + ) % mod;
} printf ("%lld\n", sum);
}
return ;
}
上一篇:zh-Hans vs.net 通过 管理nuget程序包下载简体中文语言包 zh-cn


下一篇:hdu 4893 Wow! Such Sequence!(线段树)