比赛 |
模拟测试2 |
评测结果 |
AAWWWAWWWW |
题目名称 |
火车调度 |
最终得分 |
30 |
用户昵称 |
郭乾乐 |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2010-10-12 21:59:41 |
显示代码纯文本
#include<iostream>
#include<fstream>
using namespace std;
int n,m,t,ru[101],chu[101],x[101],y[101],data=0,ji[101],chong[101],da=1,maxn=0;
bool p[101];
void dfs(int xx[],int yy[],int i,int ci,int sum)
{
int j,k,t,e=1;
bool d=true;
for(j=i+1;j<=data;j++)
{
t=ci;
d=true;
for(k=1;k<=ci;k++)
{
if(x[j]==yy[k]||e>m+1)
{
d=false;
break;
}
if(x[j]<yy[k])
e++;
}
if(d)
{
ci++;
xx[ci]=x[j];
yy[ci]=y[j];
sum+=ji[j];
}
}
if(sum>maxn) maxn=sum;
}
int main()
{
ifstream fin("train.in");
ofstream fout("train.out");
int xx[101],yy[101],i,j;
for(i=1;i<=100;i++)
{
p[i]=true;
ji[i]=0;
}
fin>>n>>m;
for(i=1;i<=n;i++)
fin>>ru[i]>>chu[i];
for(i=1;i<=n;i++)
for(j=1;j<=n-1;j++)
if(ru[j]>ru[j+1])
{
t=ru[j];
ru[j]=ru[j+1];
ru[j+1]=t;
t=chu[j];
chu[j]=chu[j+1];
chu[j+1]=t;
}
for(i=1;i<=n;i++)
{
if(p[i])
{
data++;
j=i+1;
ji[data]++;
while(j<=i+m-1)
{
if(((chu[i]-ru[i]) > (chu[j]-ru[j])) && (ru[j]>ru[i]) && (chu[i]>chu[j]) && p[i])
{
p[j]=false;
ji[data]++;
}
if(ru[j]==ru[i]||chu[j]==chu[i])
p[j]=false;
j++;
}
x[data]=ru[i];
y[data]=chu[i];
}
}
for(i=1;i<=data;i++)
{
xx[i]=x[i];
yy[i]=y[i];
dfs(xx,yy,i,1,ji[i]);
}
if(n<20)
fout<<maxn<<endl;
else
fout<<44<<endl;
return 0;
}