http://poj.org/problem?id=2430
#include<iostream>
#include"algorithm"
using namespace std;
const int size=1010;
int ans[size][size][4];
int best[size][size];
int n,m,b,nn;
enum{both,up,down,sep};
const int inf=99999999;
struct point
{
int y;
int x;
int s;
}pt[size],p[size];
bool cmp(point a,point b)
{
return a.x<b.x;
}
void init()
{
int i,j;
cin>>n>>m>>b;
for(i=0;i<n;i++)
{
cin>>pt[i].y>>pt[i].x;
pt[i].s=0;
}
std::sort(pt,pt+n,cmp);
p[0].x=p[0].y=0;
p[1]=pt[0];
for(i=1,j=2;i<n;i++)
{
if(pt[i].x==pt[i-1].x)
p[j-1].s=1;
else p[j++]=pt[i];
}
nn=n;
n=j;
}
void doit()
{
int i,j,t,k;
for(j=0;j<=m;j++)
{
for(k=0;k<4;k++)
ans[0][0][k]=0;
best[0][j]=0;
}
for(i=1;i<n;i++)
{
for(k=0;k<4;k++)
ans[i][0][k]=inf;
best[i][0]=inf;
for(j=1;j<=m;j++)
{
ans[i][j][up]=ans[i][j][down]=best[i-1][j-1]+1;
if(p[i].y==p[i-1].y && (t=ans[i-1][j][p[i].y]+p[i].x-p[i-1].x) < ans[i][j][p[i].y] )
ans[i][j][p[i].y] = t;
if( (t=ans[i-1][j][sep]+p[i].x-p[i-1].x) < ans[i][j][p[i].y] )
ans[i][j][p[i].y] = t;
ans[i][j][both]=best[i-1][j-1]+2;
if( (t=ans[i-1][j][both]+(p[i].x-p[i-1].x)*2) <ans[i][j][both] )
ans[i][j][both] = t;
if(j==1)ans[i][j][sep]=inf;
else
{
ans[i][j][sep]=best[i-1][j-2]+2;
if( (t=ans[i-1][j-1][up]+p[i].x-p[i-1].x+1) < ans[i][j][sep] )
ans[i][j][sep] = t;
if( (t=ans[i-1][j-1][down]+p[i].x-p[i-1].x+1) < ans[i][j][sep] )
ans[i][j][sep] = t;
if( (t=ans[i-1][j][sep]+(p[i].x-p[i-1].x)*2 ) < ans[i][j][sep] )
ans[i][j][sep] = t;
}
if(p[i].s)
ans[i][j][up]=ans[i][j][down]=inf;
else
ans[i][j][3-p[i].y]=inf;
best[i][j]=inf;
for(k=0;k<4;k++)
if(ans[i][j][k]<best[i][j])
best[i][j]=ans[i][j][k];
}
}
}
int main()
{
init();
doit();
cout<<best[n-1][m]<<endl;
return 0;
}
Meta
-
Recent Posts
Recent Comments
Archives
- May 2024
- April 2023
- February 2023
- January 2023
- December 2022
- November 2022
- September 2022
- June 2022
- July 2021
- January 2021
- February 2020
- September 2019
- March 2018
- February 2018
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
- March 2016
- February 2016
- January 2016
- December 2015
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
Categories
