Codeforces Beta Round #95 (Div. 2) 部分解题报告 (dp,组合数,)
做这样的比赛既考快速编码的能力,还有快速思维的能力。本人很弱,跌了rating。。加油!!!。。
第一题上来就把题意理解错了。。粗心啊。。直接模拟着做就行:1:如果字符串全是大写字母就进行大小写转换:2:如果除了第一个是小写字母其他都是大写字母就进行大小写转换:其他 原样输出。。
ct记录大写字母的个数。。 if(ct==len||(ct==len-1&&(str[0]>='a'&&str[0]<='z')))
第二题:我直接就是二了。题目中说的是-10---10结果我二处理成-9--9了。。悲剧啊。。。
记录每个数出现的个数:注意负数的处理,我是用一个结构体处理了。。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int const max_s = 107;
struct node
{
    __int64 flen,zlen;
}p[max_s];
int main()
{
    __int64 ans;
    int i,b,n;
    while(scanf("%d",&n)!=EOF)
    {
        memset(p,0,sizeof(p));
        ans=0;
        for(i=0;i<n;i++)
        {
            scanf("%d",&b);
            if(b>=0)
            p[b].zlen++;
            else
            p[-b].flen++;
        }
        //for(i=0;i<=9;i++)
        //printf("%d %d %d\n",i,p[i].zlen,p[i].flen);
        for(i=0;i<=10;i++)
        {
            if(p[i].zlen!=0)
            {
                if(i==0)
                {
                    ans+=(p[i].zlen*(p[i].zlen-1))/2;//0的时候是c(n,2);
                }
                else
                {
                    ans+=(p[i].zlen*p[i].flen);//不是0就是负数的个数*正数的个数
                }
            }
        }
        printf("%I64d\n",ans);
    }
    return 0;
}
第三题:才开始我用暴力做,结果Wa,最后听他们说是dp求组合数。。。我晕了, 哎自己的dp太弱了。然后暴力求姐
#include <iostream>
#include <cstdio>
using namespace std;
const int max_s = 35;
long long dp[max_s][max_s];
int n,m,t;
void init()//dp求解组合数(打表)
{
    int i,j;
   for(i=1;i<=30;i++)
   {
       dp[i][i]=1;
       dp[i][1]=i;
   }
   for(i=2;i<=30;i++)
   {
       for(j=2;j<=30;j++)
       {
           if(j>i)
           break;
           dp[i][j]=dp[i-1][j-1]+dp[i-1][j];
       }
   }
   /*for(i=1;i<=10;i++)
   {
       for(j=1;j<=10;j++)
       cout<<dp[i][j]<<" ";
       cout<<endl;
   }*/
}
int main()
{
    int i;
    init();
    long long ans;
    while(~scanf("%d%d%d",&n,&m,&t))
    {
        ans=0;
        for(i=4;i<=n;i++)
        {
            if(t-i>=1&&t-i<=m)
            ans+=dp[n][i]*dp[m][t-i];//主要公式。
        }
        cout<<ans<<endl;
    }
    return 0;
}
 
                    
                

 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号