折线中点
#pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #include<string.h> #include<stdlib.h> #include<vector> #include<algorithm> #include<iostream> #include<map> #include<queue> #include<stack> #include<string> #include<functional> #include<math.h> //#include<bits/stdc++.h> using namespace std; typedef long long lint; typedef vector<int> VI; typedef pair<int, int> PII; typedef queue<int> QI; void makedata() { freopen("input.txt", "w", stdout); fclose(stdout); } double x[200], y[200]; int main() { #ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin); #endif //makedata(); //std::ios::sync_with_stdio(0), cin.tie(0); int n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%lf%lf", &x[i], &y[i]); double l = 0; for (int i = 1; i < n; i++) l += sqrt((x[i] - x[i - 1]) * (x[i] - x[i - 1]) + (y[i] - y[i - 1]) * (y[i] - y[i - 1])); l /= 2.0; for (int i = 1; i < n; i++) { double tmp = sqrt((x[i] - x[i - 1]) * (x[i] - x[i - 1]) + (y[i] - y[i - 1]) * (y[i] - y[i - 1])); if (l > tmp) l -= tmp; else { printf("%.1lf %.1lf ", x[i - 1] + (l / tmp) * (x[i] - x[i - 1]), y[i - 1] + (l / tmp) * (y[i] - y[i - 1])); break; } } return 0; }
最小先序遍历
#pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #include<string.h> #include<stdlib.h> #include<vector> #include<algorithm> #include<iostream> #include<map> #include<queue> #include<stack> #include<string> #include<functional> #include<math.h> //#include<bits/stdc++.h> using namespace std; typedef long long lint; typedef vector<int> VI; typedef pair<int, int> PII; typedef queue<int> QI; void makedata() { freopen("input.txt", "w", stdout); fclose(stdout); } int a[200]; void solve(int l, int r) { if (l > r) return; int x = l; for (int i = l; i <= r; i++) { if (a[i] < a[x]) x = i; } cout << a[x] << endl; solve(l, x - 1); solve(x + 1, r); } int main() { #ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin); #endif //makedata(); std::ios::sync_with_stdio(0), cin.tie(0); int n; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; solve(1, n); return 0; }
假期计划
#pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #include<string.h> #include<stdlib.h> #include<vector> #include<algorithm> #include<iostream> #include<map> #include<queue> #include<stack> #include<string> #include<functional> #include<math.h> //#include<bits/stdc++.h> using namespace std; typedef long long lint; typedef vector<int> VI; typedef pair<int, int> PII; typedef queue<int> QI; void makedata() { freopen("input.txt", "w", stdout); fclose(stdout); } class AandC { public: long long *fac, *inv, *f; long long mod; AandC(long long m, int n) { mod = m; fac=(long long *)malloc((n) * sizeof(long long)); inv=(long long *)malloc((n) * sizeof(long long)); f=(long long *)malloc((n) * sizeof(long long)); fac[0] = fac[1] = inv[0] = inv[1] = f[0] = f[1] = 1; for (int i = 2; i < n; i++) { fac[i] = fac[i - 1] * i % mod; f[i] = (mod - mod / i) * f[mod % i] % mod; inv[i] = inv[i - 1] * f[i] % mod; } } //choose b from a long long A(int a, int b) { return fac[a] * inv[a - b] % mod; } long long C(int a, int b) { return fac[a] * inv[b] % mod * inv[a - b] % mod; } }; const lint mod = 1000000009; AandC ac(mod,110000); int main() { #ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin); #endif //makedata(); std::ios::sync_with_stdio(0), cin.tie(0); int n, a, b; cin >> n >> a >> b; lint ans = 0; for (int i = 1; i < n; i++) { if (i > b || n - i > a || n - i < 2) continue; ans += (n - i - 1) * ac.C(b - 1, i - 1) % mod * ac.C(a - 1, n - i - 1) % mod * ac.A(a, a) % mod * ac.A(b, b) % mod; ans %= mod; } cout << ans << endl; return 0; }
矩阵深度