1011 Kindergarten Physics
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=6812
题意:输出t时间后两质点的距离
思路:物理菜鸡推了好久的公式才a下,看了题解说质点移动的距离远小于 10e-6(所容许的误差值), 所以对于任意数据范围内的输入,都直接输出 d 即可。
#include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll; using namespace std; char a[100005]; set f; const double G = 6.67430e-11; int main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int T; cin >> T; while(T--) { int a,b,d,t; cin >> a >> b >> d >> t; double ans = (double)sqrt(d * d - 2 * G * (a + b) * d); printf("%.20lf\n",ans); } return 0; }
1002 Blow up the Enemy
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6803 题意:张三和父亲玩游戏,彼此最开始都有100滴血,每人能从多种武器中选一种给对方造成伤害A并在时间D后才能再次攻击,每个人选择武器的概率相等,且如果同时死亡(HP<=0),则双方都有50%的概率获胜,帮张三选择一种武器使得胜率最大化。
思路:算每个武器将HP扣完所需要花的时间,从小到大排序,最小的即为最佳情况,有几种武器将HP扣完所画的时间相等就从1减去父亲获胜的概率(因为张三选择这种武器的同时父亲也可以选择这种武器,此时父亲获胜的概率为50% * (1/n))
#include <bits/stdc++.h> #include <iostream> #include <cstdio> #include <queue> #include <cstring> #include <cmath> #include <stack> #include <set> #include <map> #include <string> #include <vector> #include <algorithm> #include <sstream> #include <unordered_map> typedef long long ll; using namespace std; int v[1005]; set<int> f;int n,a,d; const double G = 6.67430e-11; int main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int T; cin >> T; while(T--) { cin >> n; for(int i = 1; i <= n; i++) { cin >> a >> d; v[i] = ((100 + a - 1) / a - 1) * d; } sort(v + 1,v + n + 1); int temp = v[1]; double ans=1; for(int i = 1; i <= n; i++) { if(temp == v[i]) { double d = 1.0 / (2 * n); ans = ans - d; } else break; } printf("%lf\n",ans); } return 0; }