hpuoj 1192 Sequence
2016-11-28 17:08
120 查看
点击打开题目
排列组合,
就是依次找出每种价值的排列数。
其实递推一下,
b
表示每个数出现的次数。
用c
;表示从1-n c[i]==价值i的组合数。
c[i]=pow(2,b
)-1*c[i-1];
当然前面的还要保留。
超int 用 long long
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=50+10;
ll c[20];
int a[maxn],b[20];;
int main(){
int T,n;
scanf("%d",&T);
while(T--){
ll ans=0,t=0,s=0;
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
b[a[i]]++;
}int ct=0;
for(int i=1;i<=10;i++) {
if(b[i]!=0)s++;
c[i]=0;
}
for(int i=1;i<=10;i++){
if(b[i]){
ct++;ll t=pow(2,b[i])-1;
for(int j=ct;j>=1;j--){
if(j==1) c[j]+=t;
else {
c[j]+=c[j-1]*t;
}
}
}
}
for(int i=1;i<=ct;i++){
ans+=i*c[i];//printf("%d %d\n",i,c[i]);
}
printf("%lld\n",ans);
}
return 0;
}
排列组合,
就是依次找出每种价值的排列数。
其实递推一下,
b
表示每个数出现的次数。
用c
;表示从1-n c[i]==价值i的组合数。
c[i]=pow(2,b
)-1*c[i-1];
当然前面的还要保留。
超int 用 long long
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=50+10;
ll c[20];
int a[maxn],b[20];;
int main(){
int T,n;
scanf("%d",&T);
while(T--){
ll ans=0,t=0,s=0;
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
b[a[i]]++;
}int ct=0;
for(int i=1;i<=10;i++) {
if(b[i]!=0)s++;
c[i]=0;
}
for(int i=1;i<=10;i++){
if(b[i]){
ct++;ll t=pow(2,b[i])-1;
for(int j=ct;j>=1;j--){
if(j==1) c[j]+=t;
else {
c[j]+=c[j-1]*t;
}
}
}
}
for(int i=1;i<=ct;i++){
ans+=i*c[i];//printf("%d %d\n",i,c[i]);
}
printf("%lld\n",ans);
}
return 0;
}
相关文章推荐
- HPUOJ 1192 Sequence
- hpuoj-1192-Sequence【状态压缩】【组合数学】
- hpuoj 1192: Sequence
- HPU 1192:Sequence(组合数+二进制选数)
- hpu_oj 1192: Sequence
- 【HPU 1192】: Sequence 【 状态压缩】
- HPU 1192 Sequence(状态压缩+组合数学)
- 【HPU 1192 Sequence】+ 状态压缩 +组合数学
- ORACLE 自增序列SEQUENCE
- 后缀数组 POJ 3581 Sequence
- 在ORACLE中创建自增字段,sequence应用
- HDU 5667 Sequence【矩阵快速幂+费马小定理】
- Oracle中的sequence
- Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor
- 第二十三届“讯飞”杯 最长非降子序列(Sequence)
- 60. Permutation Sequence
- SEQUENCE
- HZAU 21——Arithmetic Sequence——————【暴力 or dp】
- NEXTVAL 和 CURRVAL 运算符和oracle的sequence设置说明
- Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor【模拟+链表】