제출 #165861

#제출 시각아이디문제언어결과실행 시간메모리
165861SegtreeAliens (IOI16_aliens)C++14
0 / 100
4 ms2424 KiB
#include<iostream> #include<algorithm> #include<vector> #include"aliens.h" using namespace std; typedef long long ll; typedef pair<ll,ll> P; #define chmin(a,b) a=min(a,b) #define chmax(a,b) a=max(a,b) #define N 510 vector<ll> l,r; ll Tei(int i){ ll tei=l[i]*l[i]; tei-=max(0LL,r[i]-l[i])*max(0LL,r[i]-l[i]); return tei; } ll take_photos(int n,int m,int K,vector<int> R,vector<int> C){ vector<P> v; for(int i=0;i<n;i++){ if(R[i]>C[i])swap(R[i],C[i]); v.push_back(make_pair((ll)R[i],(ll)C[i])); } sort(v.begin(),v.end()); ll rnd=-1; r.push_back(-1); for(auto p:v){ ll x=p.first,y=p.second+1; if(y<=rnd)continue; rnd=y; l.push_back(x); r.push_back(y); } n=l.size(); if(n==1)return (r[1]-l[0])*(r[1]-l[0]); ll dp[N][N]; for(int i=0;i<N;i++)for(int j=0;j<N;j++)dp[i][j]=1e17; dp[0][0]=Tei(0); for(int k=1;k<=K;k++)for(int i=1;i<=n;i++){ for(int j=0;j<i;j++){ chmin(dp[i][k],dp[j][k-1]-2*r[i]*l[j]+r[i]*r[i]); } dp[i][k]+=Tei(i); //cout<<i<<" "<<k<<" "<<dp[i][k]<<endl; } ll ans=1e17; for(int j=0;j<=K;j++)chmin(ans,dp[n][j]); return ans; }
#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...