救,逻辑上哪里有问题阿?

P1047 [NOIP2005 普及组] 校门外的树

``` for (i=0;i<=l;i+=2) a[i]=1; ``` i+=2 ? ? ?
by sjy_2023 @ 2023-05-14 17:33:25


循环好像都写成+=2了
by sjy_2023 @ 2023-05-14 17:34:48


@[zwbsszd](/user/916051) 改成了 ``` i++ ``` 但还是不行(悲
by None_g @ 2023-05-14 17:36:28


坐标最好分两个数组存
by sjy_2023 @ 2023-05-14 17:37:01


读入坐标是从1开始
by sjy_2023 @ 2023-05-14 17:44:10


哦知道了 找坐标的外层循环也从1开始 而且是到m 不是l
by sjy_2023 @ 2023-05-14 17:55:05


AC: ``` #include<bits/stdc++.h> using namespace std; int main() { int a[10001],b[10001],q[10001],w[10001]; int x=0,l,m,i,j; cin>>l>>m; for (i=1;i<=m;i++) { cin>>q[i]>>w[i]; } for (i=0;i<=l;i++) a[i]=1; for (i=1;i<=m;i++) { for (j=q[i];j<=w[i];j++) { a[j]=0; } } for (i=0;i<=l;i++) { if (a[i]==1) x++; } cout<<x; return 0; } ```
by sjy_2023 @ 2023-05-14 17:55:35


@[3316084249z](/user/811469)
by sjy_2023 @ 2023-05-14 17:57:31


@[zwbsszd](/user/916051) 欸嘿,谢谢大佬,照着思路改了改,全AC ``` #include<bits/stdc++.h> using namespace std; int main() { int a[10001],b[10001],c[10001]; int x,l,m,i,j; x=0; cin>>l>>m; for (i=1;i<=m+1;i++) { cin>>b[i]>>c[i]; }//b[i] c[i]为一个区域的起始点和终止点的坐标。 for (i=0;i<=l;i++) a[i]=1; for (i=1;i<=m;i++) { for (j=b[i];j<=c[i];j++) { a[j]=0; } } for (i=0;i<=l;i++) { if (a[i]==1) x=x+1; } cout<<x; return 0; } ```
by None_g @ 2023-05-14 21:01:08


@[zwbsszd](/user/916051) 为什么 ``` for (i=1;i<=m+1;i++) { cin>>b[i]>>c[i]; }//b[i] c[i]为一个区域的起始点和终止点的坐标。 ``` 这里 ``` i<=m+1 ``` 在C++软件里F11运行复制粘贴题目中的输入 ``` 500 3 150 300 100 200 470 471 ``` 回车没反应,但能通过题目
by None_g @ 2023-05-14 21:08:52


| 下一页