蓝桥杯 算法训练 Tennis Rackets (50%通过)

问题描述
  进行专业的体育运动需要努力锻炼,更需要顶尖设计师设计的装备。比如说网球。你不仅得体魄强健,还得拥有一把史诗级的球拍。在这道题里,你的任务是对网球业的发展作出杰出贡献,设计一种具有革命意义的全新理念的史诗级球拍!

这将是一种三角形的球拍——不仅仅是三角形,更是一个正三角形!设计完外形后你要在这个框架上穿线。正三角形的每条边上有n个小孔,把该边分成了等距的n+1段。每条边上,离每个顶点最近的m个小孔是用来改善气流的通风孔,因此线不能穿过这些孔。源于一种创新的理念,球拍网需要连成一个钝角三角形,三个角分居正三角形框架三条不同的边上。请你帮忙统计,有多少种可行的三角形球拍网设计方案。

两个三角形球拍网不同,当且仅当它们固定在某一位置拍照片是不同的。(即不考虑旋转同构)
在这里插入图片描述
输入格式
  一行两个整数n、m。
输出格式
  一个整数,表示可行的三角形球拍网设计方案的数量。
样例输入
10 1
样例输出
210
数据规模和约定
  对于30%的数据:n≤1001。
  对于100%的数据:1≤n≤32000,0≤m≤n/2。

把每一条边都算出来,三个循环时间复杂度太高了,所以有点超时了。。。

#include <iostream>

using namespace std;
int main() {
	int n,m,ans=0;
	cin>>n>>m;

	for(int i=m+1;i<=n-m;i++){
		for(int j=m+1;j<=n-m;j++){
			for(int k=m+1;k<=n-m;k++){
				int a=i*i+(n+1-j)*(n+1-j)-i*(n+1-j);
				int b=j*j+(n+1-k)*(n+1-k)-j*(n+1-k);
				int c=k*k+(n+1-i)*(n+1-i)-k*(n+1-i);
				if(a>b+c){
					ans++;
				}
			}
		}
	}
	cout<<3*ans<<endl;
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值