AkiraZWX @ 2023-02-16 12:06:25
我感觉思路没问题呀 错在哪呢
int main ()
{
int tree[100000];
int a=0,m=0;
int u=0,v=0;
int cnt=0;
scanf("%d %d", &a, &m);
for( int i=0; i<a; i++){
tree[i]=1;
} //初始化数组
for (int i=1; i<=m; i++){
scanf("%d %d", &u, &v);
for (int i=u; i<v;i++){
tree[i]=0;
}
}
for (int i=1; i<a; i++){
if ( tree[i]) cnt++;
}
printf("%d", cnt);
return 0;
}
by AkiraZWX @ 2023-02-16 12:06:46
思路:首先用数组来当作树的有无 再根据每次读入的区域来将这块区域的树铲除 也就是从1变0 最后遍历数组用计数器来找出有多少颗树
by ud2_ @ 2023-02-16 12:15:06
@AkiraZWX 读题。
马路的一端在数轴
0 的位置,另一端在l 的位置;数轴上的每个整数点,即0,1,2,…,l ,都种有一棵树。把这些区域中的树(包括区域端点处的两棵树)移走。
by AkiraZWX @ 2023-02-16 13:52:53
@ud2_ 好的好的 我改了一下 虽然有AC的但是只有前三个T_T
int main ()
{
int tree[1000001];
int a=0,m=0;
int u=0,v=0;
int cnt=0;
scanf("%d %d", &a, &m);
for( int i=0; i<=a; i++){
tree[i]=1;
} //初始化数组
for (int i=1; i<=m; i++){
scanf("%d %d", &u, &v);
for (int i=u; i<=v;i++){
tree[i]=0;
}
}
for (int i=0; i<a; i++){
if ( tree[i]) cnt++;
}
printf("%d", cnt);
return 0;
}
by AkiraZWX @ 2023-02-16 14:19:40
@ud2_ 已经AC了 谢谢大佬T_T 最后修改了最后遍历输出那里的循环条件
by AkiraZWX @ 2023-02-16 14:23:00
@ud2_
#include<stdio.h>
int main ()
// 思路:首先用数组来当作树的有无 再根据每次读入的区域来将这块区域的树铲除 也就是从1变0 最后遍历数组用计数器来找出有多少颗树
{
int tree[10000001];
int a=0,m=0;
int u=0,v=0;
int cnt=0;
scanf("%d %d", &a, &m);
for( int i=0; i<=a; i++){
tree[i]=1;
} //初始化数组
for (int i=1; i<=m; i++){
scanf("%d %d", &u, &v);
for (int i=u; i<=v;i++){
tree[i]=0;
}
}//根据次数分别读入每个区块并且铲除该区块内的树
for (int i=0; i<=a; i++){
if ( tree[i]) cnt++;
}
printf("%d", cnt);//遍历数组中有树的点 计数器加一 最后输出结果
return 0;
}