解题思路:
用一个数组存储每个点的树有没有被砍过(没砍过为0,砍过为1,因为数组初始化默认为0),更新区间直接使用memset批量赋值而不需要使用循环
注意事项:
包含起始点和终点的数,所以实际赋值大小为终点-起始点+1
参考代码:
#include<stdio.h> #include<string.h> //memset头文件 int main(void){ int l, m, road[10001], a, b, i, count; //road树的状态,count统计剩余的树的数量 while(scanf("%d %d",&l, &m) != EOF){ //多组输入 count = 0; //初始化 memset(road,0,sizeof(road)); for(i=0;i<m;i++){ scanf("%d %d",&a,&b); memset(road+a,1,sizeof(int)*(b-a+1)); //从road+a位置(road[a])开始,b-a+1个int大小内存中的值置为1 } for(int i=0;i<=l;i++){ //统计 if(!road[i]){ count++; } } printf("%d\n",count); } }
0.0分
3 人评分
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C++代码)(手动优化一下计算)浏览:1365 |
高精度加法 (C++代码)(大数加法)浏览:1008 |
DNA (C语言描述,蓝桥杯)浏览:1653 |
出圈】指针malloc版浏览:377 |
数字游戏 (C++代码)浏览:1240 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:636 |
盐水的故事 (C语言代码)浏览:1604 |
A+B for Input-Output Practice (II) (C语言代码)浏览:622 |
【偶数求和】 (C++代码)浏览:744 |
1073题解浏览:652 |