hdu4473

来源:互联网 发布:selenium java书籍推荐 编辑:程序博客网 时间:2024/05/16 10:11

今天跟两队友一起刷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;}


原创粉丝点击