| ||||||||||
| 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 | |||||||||
Re:WA了十几次了,实在找不出错误,恳请高人指点一下!!以下是代码In Reply To:WA了十几次了,实在找不出错误,恳请高人指点一下!!以下是代码 Posted by:ByteChen at 2007-10-14 11:22:49 > #include <stdio.h>
> #include <stdlib.h>
>
> #define SIZE 800000
>
> struct info{
> int q;
> long end;
> } order[SIZE];
>
> int heap[SIZE];
> void insert(int heap[],long n,int x);
> int Delete(int heap[],long n);
>
> int comp(const void *p, const void *q);
>
> int main()
> {
> long m,i,N,end,max;
>
> while(scanf("%ld",&N) == 1)
> {
> for(i = 0; i < N; i++)
> scanf("%d %ld",&order[i].q,&order[i].end);
> /* 以end为标准对order由小到大排序 */
> qsort((struct info*)order,N,sizeof(order[0]),comp);
>
> end = max = m = 0;
> for(i = 0; i < N; i++)
> {
> if(order[i].q > order[i].end)
> continue;
> end += order[i].q;
> insert(heap,++m,order[i].q); /* 将order[i].q编入最大堆中 */
> max++;
> if(order[i].end < end) /* 成立则取出存入的最大q,减去 */
> {
> end -= Delete(heap,m);
> max--;
> m--;
> }
> }
> printf("%ld\n",max);
> }
> return 0;
> }
>
> int comp(const void *p, const void *q)
> {
> struct info px = * (struct info *)p;
> struct info qx = * (struct info *)q;
> return px.end - qx.end;
> }
> /* 将x编入最大堆中,x加入后堆中有n个节点 */
> void insert(int heap[],long n,int x)
> {
> long i,j,temp;
>
> i = n;
> j = n / 2;
> heap[n] = x;
> while(j >= 1 && heap[j] < x)
> {
> temp = heap[j];
> heap[j] = heap[i];
> heap[i] = temp;
> i = j;
> j = i / 2;
> }
> }
> /* 返回大小为n的堆的根节点,并且维护堆 */
> int Delete(int heap[],long n)
> {
> long i,j,max,temp;
>
> max = heap[1];
> heap[1] = heap[n];
>
> i = 1;
> j = 2 * i;
> while(j < n - 1 && (heap[i] < heap[j] || heap[i] < heap[j+1]))
> {
> if(heap[j] >= heap[j+1])
> {
> temp = heap[i];
> heap[i] = heap[j];
> heap[j] = temp;
> }
> else
> {
> temp = heap[i];
> heap[i] = heap[j+1];
> heap[j+1] = temp;
> }
> i = j;
> j = 2 * i;
> }
> return max;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator