70分求救!!!(#1 #2#3 WA)

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

@[d13599385212](/user/1016659) 有几个问题 其一,中间的三层循环最外面一层完全不需要,直接去掉即可 其二,可能种树的范围的下标是 $0$ 到你程序中的 $a$ ,但你统计 $c$ 的那个循环是从 $0$ 到 $a-1$ ,少了一个,应把 ```cpp for(int i=0;i<a;i++) ``` 改为 ```cpp for(int i=0;i<=a;i++) ```
by xixisuper @ 2023-07-15 16:22:08


@[d13599385212](/user/1016659) AC 代码: ```cpp #include<iostream> #include <cstdio> using namespace std; int main(){ int a,b,c=0,y; int a2[20000]={0}; int a3[2][1000]; scanf("%d%d",&a,&b); for(int i=0;i<b;i++) { scanf("%d%d",&a3[0][i],&a3[1][i]); } for(int k=0;k<b;k++) { for(int j=a3[0][k];j<=a3[1][k];j++) { a2[j]=1; } } for(int i=0;i<=a;i++) { if(a2[i]==1)c++; } y=a+1-c; printf("%d",y); return 0; } ```
by xixisuper @ 2023-07-15 16:22:46


```cpp #include<bits/stdc++.h> using namespace std; long long b[10005]; int main(){ long long a,c,d,s,n=0; cin>>a>>c; for(int i=1;i<=c;i++){ cin>>d>>s; for(int j=d;j<=s;j++) b[j]=1; } for(int i=0;i<=a;i++){ if(b[i]==0){ n++; } } cout<<n; return 0; } ``` 这样也行
by My_ron @ 2023-07-17 10:11:34


|