前言:很久没有很好的自己写题了,所以这次当成练习。。。结果惨不忍睹。。。最后从网上找到的题解,理解后学习后直接用家里的笔记本直接在TXT上写好,提交 AC的。
#include <stdio.h>
#include <memory.h>
int main()
{
FILE *fin,*fout;
fin=fopen("milk2.in","r");
fout=fopen("milk2.out","w");
long n,i,j,x,y,max=0,min=10000000;
int ans[2]={0,0};
char a[1000000];
memset(a,0,sizeof(a));
fscanf(fin,"%ld",&n);
for(i=0;i<n;i++)
{
fscanf(fin,"%ld %ld",&x,&y);
y--;
if(x<min) min=x;
if(y>max) max=y;
for(j=x;j<=y;j++)a[j]=1;
}
for(i=min;i<=max;i+=j)
{
for(j=0;a[i+j]==a[i];j++);
if(j>ans[a[i]])ans[a[i]]=j;
}
fprintf(fout,"%d %d\n",ans[1],ans[0]);
fclose(fin);fclose(fout);
return 0;
}
写几条反思吧:
1,对于这种题目,总喜欢用最基础的判断大小来求,结果就是,花了一个小时,也没把答案给写好。这个用HASH的方法,值得我去学习。
2,coding能力太差,需要锻炼,对于语句要能看出主题思想。
3,有惯性思维。在for循环后,正常情况下不加结束分号,但有时是空语句。需要注意