转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove

题目:给出长度为n的铁丝,将铁丝分为若干 部分,每个部分折成三角形,要求所有三角形相似。

三角形三边相等视为相等,三角形顺序不同视为不同

http://acm.hdu.edu.cn/showproblem.php?pid=4466

首先我们考虑周长为m的三角形有多少个

我们假设 a<=b<=c

这里分为两种情况 b=c

那么对于c的上界,c最大取floor((x-1)/2),因为a最少为1

对于c的下界,c最小取ceil(x/3)

则所有情况为floor((x-1)/2)-ceil(x/3)+1

第二种情况,b!=c

我们考虑(a,b,c),由于a+b>c  ,b<=c-1所以(a,b,c-1)必定也为三角形

另外需要除掉a+b==c+1的情况 ,其中a+b+c=x,可以发现x必定为奇数,数目为floor((x-(x-1)/2)/2)

则得到代码中的递推式

我们还需要把三角形全部化为连长互质的。这里通过线性筛选就可以完成

解释一下这样做的目的。

接下来我们把n分为若干 个部分,每一个部分等长,而且都能组成若干个连长互质的三角形。由于题目要求互质。

我们把其中几个组成在一起,就是和本质三角形相似的大三角形。

假设有i个本质三角形,题目要求顺序不同视为不同,插板即可解决,i-1个空,每个空都可以选择隔开或者不隔开

2^(i-1)种情况,在一起的就组成大三角形

#include<iostream>
#include<cstdio>
#include<map>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
#include<set>
#include<string>
#include<queue>
#define inf 100000005
#define M 20005
#define N 5000005
#define maxn 300005
#define eps 1e-10
#define zero(a) fabs(a)<eps
#define Min(a,b) ((a)<(b)?(a):(b))
#define Max(a,b) ((a)>(b)?(a):(b))
#define pb(a) push_back(a)
#define mp(a,b) make_pair(a,b)
#define mem(a,b) memset(a,b,sizeof(a))
#define LL long long
#define MOD 1000000007
#define lson step<<1
#define rson step<<1|1
#define sqr(a) ((a)*(a))
#define Key_value ch[ch[root][1]][0]
//#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
int dp[N],fac[N];
void Init()
{dp[3]=1;for(int i=4;i<N;i++){dp[i]=dp[i-1]-ceil(i/3.0)+floor((i-1)/2.0)+1;if(!(i&1)) dp[i]-=floor((i-(i-1)/2.0)/2.0);if(dp[i]>=MOD) dp[i]-=MOD;if(dp[i]<0) dp[i]+=MOD;}fac[1]=1;fac[2]=2;for(int i=3;i<N;i++){fac[i]=fac[i-1]*2;if(fac[i]>=MOD) fac[i]-=MOD;for(int j=2;i*j<N;j++){dp[j*i]-=dp[i];if(dp[j*i]<0) dp[j*i]+=MOD;}}
}
int main()
{Init();int cas=0,n;while(cin>>n){LL ans=0;for(int i=1;i*i<=n;i++){if(n%i) continue;ans=(ans+(LL)dp[i]*fac[n/i])%MOD;if(i*i!=n) ans=(ans+(LL)dp[n/i]*fac[i])%MOD;}cout<<"Case "<<++cas<<": "<<ans<<endl;}return 0;
}

HDU 4466 Triangle(12年成都)相关推荐

  1. HDU 4466 Triangle(计数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4466 题意:给出一根长度为n的铁丝.将其分成若干段并将每段折成一个三角形,使得三角形都相似.有多少种分 ...

  2. hdu 4466 Triangle dp+数学

    分析 我们总共有n长的绳子,要求给绳子分段,每段都可以组成三角形,且所有三角形相似,三角形有顺序,问方案数 我们可以考虑一个F(x)F(x)F(x)为周长为x的三角形的个数 考虑三边a<=b&l ...

  3. HDU - 4466 Triangle

    题目:给你一根长度为n的铁丝,将铁丝分成几部分,再把每部分都折成三角形,并且每个三角形都相似,而且三角形的边长是整数.问有多少种分法. 三角形三遍相等视为相等,三角形顺序不同视为不同 思路:设三角形3 ...

  4. HDU 4466 Triangle

    传送门 我们枚举x=a+b+cx=a+b+c,枚举aa,a<=b<=ca 把c=x−a−bc=x-a-b代入下面的不等式中,可以得到bb的范围 a+b>ca+b>c a+c&g ...

  5. hdu 4466 Triangle (数学)

    终于做完了这道题,发一下自己的理解,踩踩~~ 题意:给你一个长度n的铁丝,将它弯成一个三角形,或者分成m段,每段组成一个三角形,要求这些三角形相似,问有多少种不同的方案数? 题解: 设f[x] 表示 ...

  6. HDU 5914 - Triangle

    题目 HDU 5914 Triangle Problem Description Mr. Frog has n sticks, whose lengths are 1,2, 3⋯n respectiv ...

  7. hdu 4324 Triangle LOVE

    http://acm.hdu.edu.cn/showproblem.php?pid=4324 比赛的时候 脑子又短路了 "between A and B, if A don't love B ...

  8. HDU 5914 Triangle 数学找规律

    Triangle 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Description Mr. Frog has n sticks, who ...

  9. HDOJ 4466 Triangle 递推

    1.当b=c时,a至少为1,所以c<=(n-1)/2 而a<=b 所以n-2*c<=c =>c>=n/3; 故共有(n-1)/2-(n/3)+(n/3?0:1)种. 2. ...

最新文章

  1. 关于python安装lxml插件的问题
  2. Unity URP一分钟实现遮挡透视
  3. GPT Plus Money!B O O M
  4. ZT:Linux上安装JDK,最准确
  5. 宅霸java_宅霸游戏联机平台下载|宅霸游戏联机平台免费版下载 v4.5.0 官方版_小皮网...
  6. 算法系列——遗传算法matlab编程详解
  7. 如何用python编表白程序
  8. 淮北农村生活污水处理设备——十四五生态环境保护规划
  9. java 批量生成条形码,打包zip(springboot)
  10. LZJ的python学习第一天
  11. 视频格式怎么转换成mp4?
  12. 单位圆的面积为π,因此可以通过求单位圆面积的近似值来求π的近似值
  13. 差分时钟、DQS与DQM - DDRx的关键技术介绍(上)
  14. Promise.all中对于reject的处理
  15. python把桢写入txt_使用Tesseract+python进行图片转文字记录
  16. c语言字符串中字母降序数字升序,将字符串以ASCII码降序排列
  17. 计算机网络中删除自己的共享,如何删除我的电脑中共享文档
  18. 图片上传时报403问题
  19. JAVA开发需求分析套路_需求分析:我走过最长的路,就是需求的套路
  20. java打包exe实例(使用javapackager)

热门文章

  1. Python3,这个方法,应该是读取文件天花板了。
  2. nmap oracle,[转帖]如何使用nmap扫描工具
  3. QtAV学习笔记 解决RTSP流无法播放问题(三)
  4. 上位机与下位机都是个啥?
  5. cmatrix黑客帝国屏保
  6. 【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)
  7. 航天信息单机和服务器版区别,企业单机版和企业多用户版的区别在哪里?
  8. 【经典教程】怎样能把SWF反编译为fla?
  9. [附源码]Python计算机毕业设计SSM基于的仓库管理系统(程序+LW)
  10. 大智慧交易系统测试软件,均线交易系统测试