当前位置: 首页 > news >正文

宣传 网站建设方案模板下载品牌建设之道有哪些

宣传 网站建设方案模板下载,品牌建设之道有哪些,做性视频网站有哪些内容,做好网站内能另外做链接吗2020 杭电多校第三场 H. Triangle Collision(反射套路 绕点旋转 矢量分解) 大意:给出一个等边三角形 , 以底边中线建立坐标系 , 给出三角形中一点 , 和其初始速度 , 小球在等边三角形中做完全弹性碰撞 , …

2020 杭电多校第三场 H. Triangle Collision(反射套路 + 绕点旋转 + 矢量分解)

大意:给出一个等边三角形 , 以底边中线建立坐标系 , 给出三角形中一点 , 和其初始速度 , 小球在等边三角形中做完全弹性碰撞 , 问其恰好碰撞 k 次的时间。

解法:

trick1: 反射套路

对于这样一个反射套路题 , 如果模拟在一个三角形内模拟碰撞的话 , 显然不现实 ,所以我们可以根据反射原理 , 将路径变成一条直线。这样问题就变成了射线在下图中的交点个数问题。

在这里插入图片描述

trick2: 我们不妨先思考水平直线相交个数如何求。假设运动实现为 t 那么显然交点个数就是

a b s ( f l o o r ( y + v y t h ) ) abs(floor(\frac{y+v_yt}{h})) abs(floor(hy+vyt))

对于另外两种直线 , 我们要求相应坐标系下的 y 和 vy

对于 y(标量) 的求法有两种 , 第一种是用点到直线的距离公式 , 但是点到直线距离公式中有除法 , 误差很大 , 所以精度不够。

第二种方法是我们可以把操作转化成绕三角形中心旋转坐标系 , 对应点的坐标也绕中心旋转后即是答案。

trick3:

对于 vy(矢量) , 我们设立好正方向 , 进行矢量分解即可。一定要设立正方向 , 因为矢量是有方向的。

这样就能求得某一时刻 t 穿过点数量 , 二分一下 t 即可。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
const int N = 2e6 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;//--------------------------------------------------------------
const double eps = 1e-5;
const double pi = acos(-1);
inline double sqr(double x) {return x * x;} //平方
int sign(double x){if(fabs(x) < eps) return 0;if(x > 0) return 1;return -1;
}//符号
struct point{double x , y;point(){}point(double a , double b) : x(a) , y(b){}friend point operator + (const point &a , const point &b){return point(a.x + b.x , a.y + b.y);}friend point operator - (const point &a , const point &b){return point(a.x - b.x , a.y - b.y);}friend bool operator == (const point &a , const point &b){return !sign(a.x - b.x) && !sign(a.y - b.y);}friend point operator * (const point &a , const double &b){return point(a.x * b , a.y * b);}friend point operator * (const double &a , const point &b){return point(a * b.x , a * b.y);}friend point operator / (const point &a , const double &b){return point(a.x / b , a.y / b);}//向量模长 double norm(){ return sqrt(sqr(x) + sqr(y));}
}; //坐标轴绕某点旋转后 , 原坐标轴下的点也会绕这个点旋转
double rotate_point(const point &a , const point &p , double A){double tx = p.x - a.x , ty = p.y - a.y;return a.y + tx * sin(A) + ty * cos(A);
}// p 点 绕 a 点逆时针旋转 A 弧度
//--------------------------------------------------------------int t , k;
double h , x , y , vx , vy , yr , yl;int solve(double st , double v , double t){return abs(floor((st + v * t) / h));
}bool check(double t){int res = 0;res += solve(y , vy , t);//水平res += solve(yr , (vx * sqrt(3) - vy) / 2 , t);res += solve(yl , (-vx * sqrt(3) - vy) / 2 , t);return res >= k;
}signed main(){cout << fixed << setprecision(10);cin >> t;while(t --){cin >> h >> x >> y >> vx >> vy >> k;h = h * sqrt(3) / 2;yr = rotate_point(point{0 , h / 3} , point{x , y} , pi / 3 * 2);yl = rotate_point(point{0 , h / 3} , point{x , y} , pi / 3 * 4);double l = 0 , r = 1e9 , mid = 0;while(r - l > eps){mid = (l + r) / 2;if(check(mid)) r = mid;else l = mid;}cout << mid << "\n";		}return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);
http://www.yayakq.cn/news/183787/

相关文章:

  • 河口区建设工程招标网站个人网站建站教程
  • 有哪些做ppt网站手机网站排名优化
  • 上海浦东建设管理有限公司网站做户型图的网站
  • 常州微信网站建设案例做三盛石材网站的公司
  • 做药物研发的人上什么网站做网站的费用入什么科目
  • 网站建设可行性的分析wordpress免费CDN加速
  • jsp sql 网站开发怎样用h5做网站
  • 建网站 赚钱如何在旅游网站上做攻略
  • php商城网站开发哪个网站有学做吃的
  • 玩具公司网站建设方案单页网站怎么做
  • 电商网站竞价推广策略不会代码怎么做网站
  • 网站都是每年续费的吗怎么用模板建站
  • 澄迈住宅与建设局网站wordpress发布文章空白
  • 大连网站快速建设推荐seo 专业为网站建设
  • 个人网页设计html加js代码百度seo排名原理
  • 网站服务器多少钱一年福清手机网站建设
  • 网站被清空了怎么办淘宝网站经营与建设论文
  • 拖拽式网站建设哪家专业关于网站备案前置审批的相关说明 吉林
  • 佛山高端网站建设公司电子商务网站的整个建设流程
  • 外链网站分类辽宁鞍山网站建设公司
  • 怎样使用仿站小工具做网站尖扎网站建设公司
  • 找个做微商授权网站网站做代码图像显示不出来的
  • 为什么淘宝店主不自己做电商网站网站建设多久
  • 怎么建设网站服务器荣耀手机全部型号
  • 做产品网站费用百度搜图入口
  • 苏州建设银行官方网站婚庆网站开发工具
  • 网站开发的开发意义太原网站建
  • 一流的聊城网站建设admin.php wordpress
  • 网站原型图设计软件滁州做网站公司
  • IT科技资讯新闻类织梦网站模板网站建设与管理教案怎么写