#include "aliens.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define all(x) (x).begin(), (x).end()
#define REP(i, l, r) for (int i = (l); i < (r); ++i)
#define sz(x) int(x.size())
ll pow2(ll v) {
return v*v;
}
struct Line {
ll a, b;
ll calc(ll x) {
return a*x+b;
}
};
struct CHT {
deque<Line> deq;
void add(Line line) {
if (!deq.empty() && deq.front().a==line.a) {
if (deq.front().b<line.b) {
return;
} else {
deq.pop_front();
}
}
while (sz(deq)>=2) {
if (__int128_t(deq[0].a-line.a) * __int128_t(deq[1].b-deq[0].b) <= __int128_t(deq[0].b-line.b) * __int128_t(deq[1].a-deq[0].a)) {
deq.pop_front();
} else break;
}
deq.push_front(line);
}
ll query(ll x) {
while (sz(deq)>=2) {
if (deq[sz(deq)-1].calc(x) >= deq[sz(deq)-2].calc(x)) {
deq.pop_back();
} else break;
}
return deq.back().calc(x);
ll mn=1LL<<60;
for (auto &line : deq) mn=min(mn,line.calc(x));
return mn;
}
};
long long take_photos(int n, int m, int K, std::vector<int> r, std::vector<int> c) {
vector<pair<int, int>> pts(n);
for(int i=0;i<n;i++){
if (r[i]>c[i])swap(r[i], c[i]);
pts[i] = make_pair(r[i], c[i]);
}
sort(all(pts));
{
vector<pair<int, int>> pts2;
for(int i=0;i<n;i++){
if (i!=n-1 && pts[i].first==pts[i+1].first)continue;
pts2.push_back(pts[i]);
}
pts=pts2;
n=sz(pts);
}
{
vector<pair<int,int>> pts2;
int mx_c=-1;
for(int i=0;i<n;i++){
if (pts[i].second<=mx_c)continue;
pts2.push_back(pts[i]);
mx_c=max(mx_c,pts[i].second);
}
pts=pts2;
n=sz(pts);
}
vector<vector<ll>> dp(n+1,vector<ll>(K+1,1LL<<60));
dp[0][0]=0;
for(int k=0;k<K;k++){
CHT cht;
for(int i=0;i<=n;i++){
if (i != 0) {
ll x = pts[i-1].second;
ll mn = cht.query(x);
ll res = mn + x * x;
dp[i][k+1] = res;
}
if (i==n)continue;
ll a=2*(-pts[i].first+1);
ll diff=pow2(max(0ll,i==0?0LL:(pts[i-1].second-pts[i].first+1)));
ll b=dp[i][k]+pow2(-pts[i].first+1)-diff;
cht.add({a,b});
}
}
ll ans=1LL<<60;
for(int i=0;i<=K;i++)ans=min(ans,dp[n][i]);
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
aliens.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
aliens_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |