Codeforces Round #367 (Div. 2)---水题 | dp | 01字典树
水题:有一个人站在(sx,sy)的位置,有n辆出租车,正向这个人匀速赶来,每个出租车的位置是(xi, yi) 速度是 Vi;求人最少需要等的时间;
单间循环即可;
#include<iostream> #include<algorithm> #include<string.h> #include<stdio.h> #include<math.h> #include<vector> using namespace std; #define INF 0x3f3f3f3f #define N 102550 #define PI 4*atan(1.0) #define mod 100000001 #define met(a, b) memset(a, b, sizeof(a)) typedef long long LL; int main() { int sx, sy, n; double ans = INF; scanf("%d %d %d", &sx, &sy, &n); for(int i=1; i<=n; i++) { int x, y, v; scanf("%d %d %d", &x, &y, &v); double d = sqrt((x-sx)*(x-sx)+(y-sy)*(y-sy)); ans = min(ans, d/v); } printf("%.7f ", ans); return 0; }
有n个物品,每个物品为ai元,某人每天有x元钱,求每天他能买几种的物品;
排序二分即可;
#include<iostream> #include<algorithm> #include<string.h> #include<stdio.h> #include<math.h> #include<vector> using namespace std; #define INF 0x3f3f3f3f #define N 102550 #define PI 4*atan(1.0) #define mod 100000001 #define met(a, b) memset(a, b, sizeof(a)) typedef long long LL; int a[N]; int main() { int n, m, num; while(scanf("%d", &n)!=EOF) { for(int i=0; i<n; i++) scanf("%d", &a[i]); sort(a, a+n); scanf("%d", &m); for(int i=0; i<m; i++) { scanf("%d", &num); int ans = upper_bound(a, a+n, num)-a; printf("%d ", ans); } } return 0; }