嗜血魂K

导航

1.2 Milking Cows

最开始还以为自己做不出来。

仔细思考之后想出了两种思路:

1.直接开10^7的大数组,开char的应该不会爆吧。。藐视noip最多是开3*10^7的int大的数组

2.用结构体储存数据,先读入一个农民,然后循环读取,每读一个,判断首位是否相连

相连则更新相连长度,否则更新最大空缺,更新最大相连长度

开始写代码 = = 只写第二种罢了

 //实实在在给自己一棒啊,结构体还不怎么会写

//再总结下:使用指针之前肯定要先申请结构体分配内存 eg struct test a, *b; b = &a;

//这样用b来指向结构体a,然后输入输出就分别 &(a->element) a->element;

//->之后就是那个变量,所以直接输出,但要输入要先取址 

----------------------------------------------------------------------------------------------------------------------------------------------------以为能够不排序侥幸AC,结构还是被拦下来了。。。明天再来写了

注释部分是默认排序的版本。。。。。

结构写出来还是有些小问题,比如

程序中没有考虑只有当下一个农夫结束时间大于当前才进行更新,这点在想思路时慌了。

其次是在for中的if嵌套的if一开始没加括号果断悲剧T T

/*
ID:y7276571
LANG: C
TASK: milk2
*/
#include<stdio.h>
#include<stdlib.h>
#define MAXN 5000
typedef struct fm{
int start, end;
}fm;
int cmp(const void *a, const void *b)
{
return ((fm*)a)->start - ((fm*)b)->start;
}
int main(void)
{
freopen("milk2.in", "r", stdin);
freopen("milk2.out", "w", stdout);
int i, n, maxlen, maxbk = 0, a, b;
fm f[MAXN];
scanf("%d", &n);
for(i = 0; i < n; i++) scanf("%d%d", &((f+i)->start), &((f+i)->end));
qsort(f, n, sizeof(fm), cmp);
a = f->start; b = f->end;
maxlen = b-a;
for(i = 1; i < n; i++)
{
if(b >= (f+i)->start) { if(b < (f+i)->end) b = (f+i)->end; }
else{
if(maxlen < b - a) maxlen = b-a;
if(maxbk < (f+i)->start-b) maxbk = (f+i)->start -b;
a = (f+i)->start; b = (f+i)->end;
}
}
if(maxlen < b - a) maxlen = b-a;
printf("%d %d\n", maxlen, maxbk);
exit(0);
}



/*
int main(void)
{
freopen("milk2.in", "r", stdin);
freopen("milk2.out", "w", stdout);
int n, start, end, maxlen, maxbk = 0;
fm b, *a; a = &b
scanf("%d%d%d", &n, &(a->start), &(a->end));
maxlen = a->end-a->start;
while(--n>0)
{
scanf("%d%d", &start, &end);
if(start <= a->end) a->end = end;
else {
if(maxbk < start - a->end) maxbk = start - a->end;
if(maxlen < a->end - a->start) maxlen = a->end - a->start;
a->start = start; a->end = end;
}
}
if(maxlen < a->end - a->start) maxlen = a->end - a->start;
printf("%d %d\n", maxlen, maxbk);
exit(0);
}
*/

 

posted on 2011-10-31 12:54  嗜血魂K  阅读(285)  评论(0编辑  收藏  举报