hdu4473

今天跟两队友一起刷2012成都区域赛题目,首先水过A题,然后我开始看B题,期望公式公式推了半小时,总以为可以化简,最后化简成功了,不过...发现结果错的离谱,然后找ZLj讨论了一下推理过程,在自己模拟了一下,发现确实是原始公式错了,在我推B题的时候,LH和ZLJ一直在推I题的公式,不过思路是dfs剪枝,时间上过不去,我问了一下题目意思,觉得是分类讨论递推,试着推敲了一下AC了,接下来看了K题,想法也错了,总之之后都没出题,感觉弱爆了。。。Fighting

回到题目,这题是很好的思维题,一开始没看懂题目意思,后来看了别人的题解才知道要求的是方案数(感觉读题能力很水啊!!!),然后看了思维过程,设计很巧妙啊,分类讨论3种情况,先组合再排列,然后n开3次方统计情况数,时间复杂度O(n^2/3),这种题目只能膜拜,思维太飘渺了。。。


ACcode:

#include<cstdio>
#include<cstring>
#include<cmath>

typedef long long LL;

LL a,b,c,t,n,res;

int main()
{
    int cas=0;
    while (~scanf("%I64d",&n))
    {
        a=pow(n,1.0/3);
        while (a*a*a<n) a++;
        while (a*a*a>n) a--;
        res=a;
        for (int i=1;i<=a;i++)
        {
            t=n/i;
            b=sqrt(t);
            while (b*b<t) b++;
            while (b*b>t) b--;
            res+=(t/i-i+b-i)*3;
            for (int j=i+1;j<=b;j++)
            res+=(t/j-j)*6;
        }
        printf("Case %d: %I64d\n",++cas,res);
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值