本文主要是介绍vj题单 Color the ball c 差分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接: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.在写程序时,应该想地更全面,一步一步稳步推进,逻辑严谨
这篇关于vj题单 Color the ball c 差分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!