#include<bits/stdc++.h> usingnamespace std; using ll = longlong; constint maxn = 2e5 + 10; const ll mod = 1e9 + 7; ll inv[maxn], fac[maxn]; // 分别表示逆元和阶乘 // 快速幂 ll quickPow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans = (ans * a) % mod; b >>= 1; a = (a * a) % mod; } return ans; }
voidinit() { // 求阶乘 fac[0] = 1; for (int i = 1; i <= maxn; i++) { fac[i] = fac[i - 1] * i % mod; } // 求逆元 inv[maxn - 1] = quickPow(fac[maxn - 1], mod - 2); for (int i = maxn - 2; i >= 0; i--) { inv[i] = inv[i + 1] * (i + 1) % mod; } } ll C(int n, int m) { if (m > n) { return0; } if (m == 0) return1; return fac[n] * inv[m] % mod * inv[n - m] % mod; } ll get(ll a, ll b, ll c, ll d) { returnC(c - a + d - b, c - a) % mod; } intmain() { int n; cin>>n; ll sum=0; for(int i=1;i<=n;i++) { sum+=i; } cout<<sum<<'\n'; return0; }
#include<bits/stdc++.h> usingnamespace std; using ll = longlong; constint maxn = 2e5 + 10; const ll mod = 1e9 + 7; ll inv[maxn], fac[maxn]; // 分别表示逆元和阶乘 // 快速幂 ll quickPow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans = (ans * a) % mod; b >>= 1; a = (a * a) % mod; } return ans; }
voidinit() { // 求阶乘 fac[0] = 1; for (int i = 1; i <= maxn; i++) { fac[i] = fac[i - 1] * i % mod; } // 求逆元 inv[maxn - 1] = quickPow(fac[maxn - 1], mod - 2); for (int i = maxn - 2; i >= 0; i--) { inv[i] = inv[i + 1] * (i + 1) % mod; } } ll C(int n, int m) { if (m > n) { return0; } if (m == 0) return1; return fac[n] * inv[m] % mod * inv[n - m] % mod; } ll get(ll a, ll b, ll c, ll d) { returnC(c - a + d - b, c - a) % mod; } intmain() { string s; cin >> s; stack<char> a; for (auto c : s) { if (c == 'B') { if (!a.empty()) { a.pop(); } } else { a.push(c); } } string h = ""; while (!a.empty()) { char c = a.top(); h += c; a.pop(); } reverse(h.begin(), h.end()); cout << h << '\n';
return0; }
C
题目大意: 把 n个整数都变成一个相同的数,将 x 转成 y 的代价为 \((x−y)^2\)。求最小总代价。
#include<bits/stdc++.h> usingnamespace std; using ll = longlong; constint maxn = 2e5 + 10; const ll mod = 1e9 + 7; ll inv[maxn], fac[maxn]; // 分别表示逆元和阶乘 // 快速幂 ll quickPow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans = (ans * a) % mod; b >>= 1; a = (a * a) % mod; } return ans; }
voidinit() { // 求阶乘 fac[0] = 1; for (int i = 1; i <= maxn; i++) { fac[i] = fac[i - 1] * i % mod; } // 求逆元 inv[maxn - 1] = quickPow(fac[maxn - 1], mod - 2); for (int i = maxn - 2; i >= 0; i--) { inv[i] = inv[i + 1] * (i + 1) % mod; } } ll C(int n, int m) { if (m > n) { return0; } if (m == 0) return1; return fac[n] * inv[m] % mod * inv[n - m] % mod; } ll get(ll a, ll b, ll c, ll d) { returnC(c - a + d - b, c - a) % mod; } intmain() { int n; cin >> n; int sum = 0; vector<int> a(n + 1); for (int i = 1; i <= n; i++) { cin >> a[i]; sum += a[i]; } int s = sum / n; int res = 1e9; for (int x = s - 1; x <= s + 1; x++) { int ans = 0; for (int i = 1; i <= n; i++) { ans += (x - a[i]) * (x - a[i]); } res = min(res, ans); } cout << res << '\n'; return0; }
#include<bits/stdc++.h> usingnamespace std; using ll = longlong; constint maxn = 2e5 + 10; const ll mod = 1e9 + 7; ll inv[maxn], fac[maxn]; // 分别表示逆元和阶乘 // 快速幂 ll quickPow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans = (ans * a) % mod; b >>= 1; a = (a * a) % mod; } return ans; }
voidinit() { // 求阶乘 fac[0] = 1; for (int i = 1; i <= maxn; i++) { fac[i] = fac[i - 1] * i % mod; } // 求逆元 inv[maxn - 1] = quickPow(fac[maxn - 1], mod - 2); for (int i = maxn - 2; i >= 0; i--) { inv[i] = inv[i + 1] * (i + 1) % mod; } } ll C(int n, int m) { if (m > n) { return0; } if (m == 0) return1; return fac[n] * inv[m] % mod * inv[n - m] % mod; } ll get(ll a, ll b, ll c, ll d) { returnC(c - a + d - b, c - a) % mod; } intmain() { string s; cin >> s; int n = s.length() - 1; for (int i = 0; i <= n - 1; i++) { if (s[i] == s[i + 1]) { cout << i + 1 << " " << i + 2 << '\n'; return0; } if (s[i] == s[i + 2]) { cout << i + 1 << " " << i + 3 << '\n'; return0; } } cout << -1 << ' ' << -1 << '\n'; return0; }