제출 #1274355

#제출 시각아이디문제언어결과실행 시간메모리
1274355coderg300711Aliens (IOI16_aliens)C++20
4 / 100
2 ms356 KiB
#include "aliens.h" #include <bits/stdc++.h> using namespace std; using ll = long long; #define all(x) (x).begin(), (x).end() #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, vector<int> r, 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...