| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
有谁帮我看看,总是WA#include <iostream.h>
struct wall{
int top;//某列墙的数量
int walid[100];//墙的序号
};
int times[100];
int max()
{
int maxs=times[0],id=0;
for(int i=1;i<100;i++)
if(times[i]>maxs)
{
maxs=times[i];
id=i;
}
return id;
}
int main(int argc, char* argv[])
{
int t,n,k,*x1,*y1,*x2,*y2,i,j,stack[101],st,move,sign;
wall wall[101];
cin>>t;
while(t--)
{
cin>>n>>k;
x1=new int[n];
y1=new int[n];
x2=new int[n];
y2=new int[n];
i=0;
for(j=0;j<101;j++)
wall[j].top=0;
while(i<n)
{
cin>>x1[i]>>y1[i]>>x2[i]>>y2[i];
if(x1[i]>=x2[i])
for(j=x2[i];j<=x1[i];j++)
wall[j].walid[wall[j].top++]=i;
else
for(j=x1[i];j<=x2[i];j++)
wall[j].walid[wall[j].top++]=i;
i++;
}
move=0;
while(1)
{
st=0;//不能通过的列的数量
for(i=0;i<101;i++)
if(wall[i].top>k)
stack[st++]=i;//不能通过的列的序号
if(st==0)
{
cout<<move<<endl;
break;
}
for(j=0;j<100;j++)
times[j]=0;
for(i=0;i<st;i++)
for(j=0;j<wall[stack[i]].top;j++)
{
sign=wall[stack[i]].walid[j];
times[sign]++;
}
int m=max();
for(i=0;i<st;i++)
for(j=0;j<wall[stack[i]].top;j++)
if(wall[stack[i]].walid[j]==m)
{
wall[stack[i]].walid[j]=wall[stack[i]].walid[--wall[stack[i]].top];
break;
}
move++;
}
}
return 1;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator