菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
194
0

hdu 2082 找单词

原创
05/13 14:22
阅读数 79479

hdu2082找单词
构造幂为价值的生成函数

#include<cstdio>
#include<cstring> 
#include<algorithm> 

inline int read() { 
	int x = 0; 
	char c = getchar(); 
	while(c < '0' || c > '9') c = getchar(); 
	while(c <= '9' && c >= '0')x = x * 10 + c- '0',c = getchar(); 
	return x ; 
} 
const int maxn = 60; 
int k,a[maxn],b[maxn]; 
int main() { 
	k = read(); 
	while(k --) { 
		int num; 
		memset(b,0,sizeof b); 
		memset(a,0,sizeof a); 
	       	a[0] = 1; 	
		for(int i = 1;i <= 26;++ i) { 		
			num = read(); 	
			if(!num) continue; 
			for(int j = 0;j <= 50;++ j) {
				for(int k = 0;k <= num && k * i + j <= 50;++ k) 
					b[k * i + j] += a[j]; 
			} 
			for(int j = 0;j <= 50;++ j) a[j] = b[j],b[j] = 0; 
		} 
		int ans = 0; 
		for(int i = 1;i <= 50;++ i) ans += a[i]; 
		printf("%d\n",ans);	
	}  
	return 0; 
} 

发表评论

0/200
194 点赞
0 评论
收藏
为你推荐 换一批