随笔 - 6, 文章 - 5, 评论 - 0, 引用 - 0
数据加载中……

[USACO]milking cows

前言:很久没有很好的自己写题了,所以这次当成练习。。。结果惨不忍睹。。。最后从网上找到的题解,理解后学习后直接用家里的笔记本直接在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循环后,正常情况下不加结束分号,但有时是空语句。需要注意

posted on 2012-02-08 00:11 slytherin 阅读(200) 评论(0)  编辑 收藏 引用 所属分类: USACO


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理