HDU 4466 Triangle(12年成都)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove
题目:给出长度为n的铁丝,将铁丝分为若干 部分,每个部分折成三角形,要求所有三角形相似。
http://acm.hdu.edu.cn/showproblem.php?pid=4466
那么对于c的上界,c最大取floor((x-1)/2),因为a最少为1
则所有情况为floor((x-1)/2)-ceil(x/3)+1
我们考虑(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个空,每个空都可以选择隔开或者不隔开
#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年成都)相关推荐
- HDU 4466 Triangle(计数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4466 题意:给出一根长度为n的铁丝.将其分成若干段并将每段折成一个三角形,使得三角形都相似.有多少种分 ...
- hdu 4466 Triangle dp+数学
分析 我们总共有n长的绳子,要求给绳子分段,每段都可以组成三角形,且所有三角形相似,三角形有顺序,问方案数 我们可以考虑一个F(x)F(x)F(x)为周长为x的三角形的个数 考虑三边a<=b&l ...
- HDU - 4466 Triangle
题目:给你一根长度为n的铁丝,将铁丝分成几部分,再把每部分都折成三角形,并且每个三角形都相似,而且三角形的边长是整数.问有多少种分法. 三角形三遍相等视为相等,三角形顺序不同视为不同 思路:设三角形3 ...
- 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 ...
- hdu 4466 Triangle (数学)
终于做完了这道题,发一下自己的理解,踩踩~~ 题意:给你一个长度n的铁丝,将它弯成一个三角形,或者分成m段,每段组成一个三角形,要求这些三角形相似,问有多少种不同的方案数? 题解: 设f[x] 表示 ...
- HDU 5914 - Triangle
题目 HDU 5914 Triangle Problem Description Mr. Frog has n sticks, whose lengths are 1,2, 3⋯n respectiv ...
- hdu 4324 Triangle LOVE
http://acm.hdu.edu.cn/showproblem.php?pid=4324 比赛的时候 脑子又短路了 "between A and B, if A don't love B ...
- HDU 5914 Triangle 数学找规律
Triangle 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Description Mr. Frog has n sticks, who ...
- 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. ...
最新文章
- 关于python安装lxml插件的问题
- Unity URP一分钟实现遮挡透视
- GPT Plus Money!B O O M
- ZT:Linux上安装JDK,最准确
- 宅霸java_宅霸游戏联机平台下载|宅霸游戏联机平台免费版下载 v4.5.0 官方版_小皮网...
- 算法系列——遗传算法matlab编程详解
- 如何用python编表白程序
- 淮北农村生活污水处理设备——十四五生态环境保护规划
- java 批量生成条形码,打包zip(springboot)
- LZJ的python学习第一天
- 视频格式怎么转换成mp4?
- 单位圆的面积为π,因此可以通过求单位圆面积的近似值来求π的近似值
- 差分时钟、DQS与DQM - DDRx的关键技术介绍(上)
- Promise.all中对于reject的处理
- python把桢写入txt_使用Tesseract+python进行图片转文字记录
- c语言字符串中字母降序数字升序,将字符串以ASCII码降序排列
- 计算机网络中删除自己的共享,如何删除我的电脑中共享文档
- 图片上传时报403问题
- JAVA开发需求分析套路_需求分析:我走过最长的路,就是需求的套路
- java打包exe实例(使用javapackager)
热门文章
- Python3,这个方法,应该是读取文件天花板了。
- nmap oracle,[转帖]如何使用nmap扫描工具
- QtAV学习笔记 解决RTSP流无法播放问题(三)
- 上位机与下位机都是个啥?
- cmatrix黑客帝国屏保
- 【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)
- 航天信息单机和服务器版区别,企业单机版和企业多用户版的区别在哪里?
- 【经典教程】怎样能把SWF反编译为fla?
- [附源码]Python计算机毕业设计SSM基于的仓库管理系统(程序+LW)
- 大智慧交易系统测试软件,均线交易系统测试