QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#126785 | #2784. Aliens | somethingnew# | Compile Error | / | / | C++20 | 2.0kb | 2023-07-18 23:49:17 | 2024-07-04 00:45:21 |
Judging History
你现在查看的是最新测评结果
- [2024-07-04 00:45:21]
- 评测
- 测评结果:Compile Error
- 用时:0ms
- 内存:0kb
- [2023-08-10 23:21:45]
- System Update: QOJ starts to keep a history of the judgings of all the submissions.
- [2023-07-18 23:49:17]
- 提交
answer
// ↘ ⬇ ⬇ ⬇ ⬇ ⬇ ↙
// ➡ @roadfromroi ⬅
// ↗ ⬆ ⬆ ⬆ ⬆ ⬆ ↖
#include <iostream>
#include "vector"
#include "algorithm"
#include "numeric"
#include "climits"
#include "iomanip"
#include "bitset"
#include "cmath"
#include "map"
#include "deque"
#include "array"
#include "set"
#include "aliens.h"
#define all(x) x.begin(), x.end()
using namespace std;
typedef long long ll;
ll sq(ll a) {
return a * a;
}
pair<ll, int> reba(int n, vector<pair<int, int>> opp, ll cc) {
vector<int> cnt(n + 1);
vector<ll> dp(n + 1, 1e18);
dp[0] = 0;
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j <= n; ++j) {
ll vl = dp[i] + sq(opp[i].first - opp[j-1].second - 1) + cc;
if (dp[j] > vl) {
dp[j] = vl;
cnt[j] = cnt[i] + 1;
}
}
}
return {dp[n], cnt[n]};
}
ll take_photos(int n, int m, int k, vector<int> re, vector<int> c) {
vector<pair<int, int>> sgg(n);
for (int i = 0; i < n; ++i) {
sgg[i] = {min(re[i], c[i]), max(re[i], c[i])};
}
sort(all(sgg));
vector<pair<int, int>> bb;
for (auto [l, r] : sgg) {
while (!bb.empty() and l == bb.back().first)
bb.pop_back();
if (bb.empty() or bb.back().second < r) {
bb.push_back({l, r});
}
}
sgg = bb;
n = sgg.size();
ll l = 0, r = (ll)1e14;
while (l + 1 < r) {
ll m = l + r >> 1ll;
if (reba(n, sgg, m).second >= k) {
l = m;
} else {
r = m;
}
}
//cout << l << endl;
pair<ll, int> val = reba(n, sgg, l);
return val.first - l * val.second + l * (k-val.second);
}
int main() {
int n, m, k;
assert(3 == scanf("%d %d %d", &n, &m, &k));
std::vector<int> r(n), c(n);
for (int i = 0; i < n; i++) {
assert(2 == scanf("%d %d", &r[i], &c[i]));
}
long long ans = take_photos(n, m, k, r, c);
printf("%lld\n", ans);
return 0;
}
详细
answer.code: In function ‘int main()’: answer.code:69:5: error: ‘assert’ was not declared in this scope 69 | assert(3 == scanf("%d %d %d", &n, &m, &k)); | ^~~~~~ answer.code:17:1: note: ‘assert’ is defined in header ‘<cassert>’; did you forget to ‘#include <cassert>’? 16 | #include "aliens.h" +++ |+#include <cassert> 17 | #define all(x) x.begin(), x.end()