QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#375438 | #8340. 3 Sum | isaunoya | Compile Error | / | / | C++23 | 3.2kb | 2024-04-03 10:47:03 | 2024-09-20 10:20:56 |
Judging History
你现在查看的是最新测评结果
- [2024-09-20 10:20:56]
- 自动重测本题所有获得100分的提交记录
- 测评结果:Compile Error
- 用时:0ms
- 内存:0kb
- [2024-09-20 10:20:30]
- hack成功,自动添加数据
- (/hack/848)
- [2024-04-03 10:47:03]
- 提交
answer
#include <cmath>
#if defined(LOCAL)
#include <D:/cp/templates/my_template_compiled.hpp>
#else
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx2,popcnt")
#include <bits/stdc++.h>
#define debug(...) 42
#define rep1(a) for (auto i = 0; i < a; i++)
#define rep2(i, a) for (auto i = 0; i < a; i++)
#define rep3(i, a, b) for (auto i = a; i < b; i++)
#define rep4(i, a, b, c) for (auto i = a; i < b; i += c)
#define overload4(a, b, c, d, e, ...) e
#define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__)
#define pb emplace_back
using namespace std;
template <typename T, typename T2> void cmin(T &x, const T2 &y) {
x = x < y ? x : y;
}
template <typename T, typename T2> void cmax(T &x, const T2 &y) {
x = x > y ? x : y;
}
template <typename T> using vc = vector<T>;
using ll = long long;
using vi = vector<int>;
using vl = vector<ll>;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
mt19937 rng(time(NULL));
const int INF = 1000000000;
const ll LNF = 1000000000000000000;
#define sz(x) int((x).size())
#define all(x) begin(x), end(x)
#define fi first
#define se second
#endif
const int mod = 1e9 + 7;
const int mod2 = 1e9 + 9;
void solve() {
int n, K;
cin >> n >> K;
auto fit = [&](auto &fit, const vl &s) -> vl {
if (sz(s) <= K) {
if (s == vl(K, 9)) {
return vl(K, 0);
} else {
return s;
}
} else {
vl cur(K, 0);
rep(i, sz(s)) cur[i % K] += s[i];
rep(i, K) {
int car = cur[i] / 10;
cur[i] %= 10;
if (car) {
if (i + 1 < K) {
cur[i + 1] += car;
} else {
cur.push_back(car);
}
}
}
while ((int)cur.size() > K && cur.back() == 0) {
cur.pop_back();
}
return fit(fit, cur);
}
assert(0);
};
vc<vl> s(n);
rep(n) {
string cur;
cin >> cur;
vl a(sz(cur));
rep(j, sz(cur)) a[j] = cur[j] - '0';
reverse(all(a));
if (sz(a) < K) {
a.resize(K);
}
// debug(a);
s[i] = fit(fit, a);
}
debug(s);
vc<pll> val(n);
vl pw(K + 1);
vl pw2(K + 1);
pw[0] = pw2[0] = 1;
rep(K) pw[i + 1] = pw[i] * 10 % mod;
rep(K) pw2[i + 1] = pw2[i] * 10 % mod2;
rep(n) {
ll w = 0;
rep(j, K) { w = (w + s[i][j] * pw[j] % mod) % mod; }
ll w2 = 0;
rep(j, K) { w2 = (w2 + s[i][j] * pw2[j] % mod2) % mod2; }
val[i] = pll(w, w2);
}
// debug(val);
vc<pll> target;
rep(3) {
target.pb(1ll * i * (pw[K] - 1) % mod, 1ll * i * (pw2[K] - 1) % mod2);
}
// debug(target);
ll ans = 0;
map<pll, int> cur;
rep(j, n) {
cur[val[j]]++;
rep(k, j, n) {
rep(l, 3) {
pll cur_w =
pll((target[l].fi + mod - val[j].fi + mod - val[k].fi) % mod,
(target[l].se + mod2 - val[j].se + mod2 - val[k].se) % mod2);
// debug(j, k, cur_w);
if (cur.count(cur_w)) {
debug(j, k, l);
ans += cur[cur_w];
}
}
}
}
cout << ans << "\n";
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}
详细
In file included from /usr/include/c++/13/string:43, from /usr/include/c++/13/bitset:52, from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:52, from answer.code:7: /usr/include/c++/13/bits/allocator.h: In destructor ‘constexpr std::__cxx11::basic_string<char>::_Alloc_hider::~_Alloc_hider()’: /usr/include/c++/13/bits/allocator.h:184:7: error: inlining failed in call to ‘always_inline’ ‘constexpr std::allocator< <template-parameter-1-1> >::~allocator() noexcept [with _Tp = char]’: target specific option mismatch 184 | ~allocator() _GLIBCXX_NOTHROW { } | ^ In file included from /usr/include/c++/13/string:54: /usr/include/c++/13/bits/basic_string.h:181:14: note: called from here 181 | struct _Alloc_hider : allocator_type // TODO check __is_final | ^~~~~~~~~~~~