hdu1050,测试了很多数据都对,但是还是WA,请大家帮忙看看
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int ts,te;
}a[210];
bool cmp(node n1,node n2)
{ if(n1.te!=n2.te)
return n1.te<n2.te;
else
return n1.ts>n2.ts;
}
int main()
{
int n,i,j,k,;
int visit[110];
int result,temp;
cin>>k;
while(k--)
{ scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i].ts,&a[i].te);
if(a[i].ts>a[i].te)
{
temp=a[i].ts;
a[i].ts=a[i].te;
a[i].te=temp;
}
if(a[i].te%2==1)a[i].te++;
}
sort(a,a+n,cmp);
memset(visit,0,sizeof(visit));
result=0;
int flag=1;
int s;
while(flag)
{
result+=1;
for(i=0;i<n;i++)
if(!visit[i])
{
j=i;
visit[j]=1;
break;
}
for(i=0;i<n;i++)
{
if(!visit[i]&&a[i].ts>a[j].te)
{
j=i;
visit[i]=1;
}
}
s=0;
for(int w=0;w<n;w++)
{
if(visit[w])
{ s++;
}
if(s==n)flag=0;
}
}
cout<<result*10<<endl;
}
// system("pause");
return 0;
}
[解决办法]
你这代码一点注释都没有,你也不说程序功能,真心蛋疼!
[解决办法]
- C/C++ code
#include<iostream>#include<algorithm>using namespace std;struct node{ int ts,te; }a[210];bool cmp(node n1,node n2){ /*改 if(n1.te!=n2.te) return n1.te<n2.te; else return n1.ts>n2.ts;很可能这行是主要错误*/ return n1.ts<n2.ts;} int main(){ int n,i,j,k;//错int n,i,j,k,; int visit[210];//int visit[110]; int result,temp; cin>>k; while(k--) { scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d%d",&a[i].ts,&a[i].te); if(a[i].ts>a[i].te) { temp=a[i].ts; a[i].ts=a[i].te; a[i].te=temp; } //改if(a[i].te%2==1)a[i].te++; a[i].ts=(a[i].ts+1)/2;//加 a[i].te=(a[i].te+1)/2;//加 } sort(a,a+n,cmp); memset(visit,0,sizeof(visit)); result=0; int flag=1; int s; j=0;//加 visit[0]=1;//加 while(flag) { result+=1; flag=0; //以下大改 for(i=0;i<n;i++) { if(!visit[i]&&a[i].ts>a[j].te) { j=i; visit[i]=1; } } for(i=0;i<n;i++) { if(!visit[i]) { flag=1; j=i; visit[i]=1; break; } } } cout<<result*10<<endl; } // system("pause"); return 0;}
[解决办法]
上个代码参考下:
- C/C++ code
#include"stdio.h"int a[205];int main(){ int T,t,i,x,y,max,n; scanf("%d",&T); while(T--) { for(i=0;i<=200;i++) a[i]=0; scanf("%d",&n); while(n--) { scanf("%d%d",&x,&y); if(x>y) { t=x;x=y;y=t;} for(i=(x+1)/2;i<=(y+1)/2;i++) a[i]++; } max=0; for(i=1;i<=200;i++) if(max<a[i]) max=a[i]; printf("%d\n",max*10); } return 0;}