• poj 1959 Darts 同意反复组合


    水题。直接贴代码。

    //poj 1959
    //sep9
    #include <iostream>
    using namespace std;
    int n;
    int f[128];
    int solve()
    {
    	int x,y,z,sum=0;
    	for(x=0;x<=n&&x<=60;++x)
    		for(y=x;y<=n&&y<=60;++y)
    			for(z=y;z<=n&&z<=60;++z)
    				if(x+y+z==n){
    					if(x==y&&y==z){
    						int m=f[x];
    						sum+=(m+2)*(m+1)*m/6;	
    					}	
    					else if(x==y||y==z){
    						int m,c;
    						if(x==y){
    							m=f[x];
    							c=f[z];
    						}
    						else{
    							m=f[y];
    							c=f[x];
    						}
    						sum+=((m+1)*m/2)*c;
    					}
    					else 
    						sum+=f[x]*f[y]*f[z];
    				}			
    	return sum;
    }
    
    int main()
    {
    	int cases,t=0;
    	memset(f,0,sizeof(f));
    	f[0]=1;
    	for(int i=1;i<=3;++i)
    		for(int j=1;j<=20;++j)
    			++f[i*j];
    	++f[25];
    	++f[50];
    	scanf("%d",&cases);
    	while(cases--){
    		scanf("%d",&n);
    		printf("Scenario #%d:
    %d
    
    ",++t,solve());
    	}
    	return 0;	
    } 


  • 相关阅读:
    Muddy Fields
    LightOJ 1321
    LightOJ 1085
    LightOJ 1278
    LightOJ 1341
    LightOJ 1340
    vijos 1426 背包+hash
    vijos 1071 01背包+输出路径
    vijos 1907 DP+滚动数组
    vijos 1037 背包+标记
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5132831.html
Copyright © 2020-2023  润新知