赞
踩
题目链接:Problem - 1556 (hdu.edu.cn)
笔者思路:利用一维差分数组进行区间同时+1的操作,然后还原为一维前缀和数组
笔者答案:
- #include<stdio.h>
- int cut[100010];
-
- int main()
- {
- long N,a,b,i,k=1,j;
- scanf("%ld",&N);
- while(N!=0)
- {
- for(i=1;i<=N;i++)
- {
- scanf("%ld %ld",&a,&b);
- cut[a]++;
- cut[b+1]--;
- }
- for(i=1;i<=N;i++)
- {
- cut[i]=cut[i-1]+cut[i];
- printf("%d ",cut[i]);
- cut[i-1]=0;
- if(i==N)
- {
- cut[i]=0;
- cut[i+1]=0;//易错点:cut[i],cut[i+1]容易忘记赋为0
- }
- }
- printf("\n");
- scanf("%ld",&N);
- }
-
- return 0;
- }
算法收获:
1.一维前缀和数组,输入原数组,求其一维前缀和数组这两个过程只需要一个数组即可,这样可以降低空间
编程收获:
1.wa时可以利用一些特殊的数据去测试,如一些边界条件
2.wa时可以找一个与自己写的程序的思路接近的正确答案,把正确的代码一步一步地修改成自己的代码,看哪一步开始wa
3.wa时可以重头思考程序的逻辑是否严谨,是否有一些边界条件未处理到
4.在写程序时,应该想地更全面,一步一步稳步推进,逻辑严谨
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。