60分求助!!!

P2141 [NOIP2014 普及组] 珠心算测验

可以考虑优化一下,应该就能过了
by ajahjahah @ 2022-04-16 20:03:16


@[cker](/user/646985) 考虑将b[]数组的范围开大到```n*n+10```,而且将第18行的```b[q++]=a[i];```改为```b[++q]=a[i];```
by LJ07 @ 2022-04-16 20:08:52


```q++```等价于将q加1,然后返回q**原来**的值 ```++q```等价于将q加1,然后返回q**改变后**的值
by LJ07 @ 2022-04-16 20:10:15


@[LJ07](/user/312306) 千言万语道不尽我的感谢,谢谢大佬!!!
by cker @ 2022-04-16 20:25:00


@[lao_ba](/user/357378) 谢谢大佬!
by cker @ 2022-04-16 20:25:25


@[LJ07](/user/312306) 不懂就问:b[]数组的数据量不是应该要比a[]数组小的吗?
by cker @ 2022-04-16 20:31:24


@[cker](/user/646985) ```cpp for(int i=0;i<n;i++) { for(int j=0;j<i;j++) for(int k=j+1;k<i;k++) { if(a[j]+a[k]==a[i]) { b[q++]=a[i]; sum++; } if(a[j]+a[k]>a[i]) break; } } ``` 上述代码段事实上```if```语句会执行将近 $n^3$ 次,也就意味着 $q$ 的大小将会远远大于 $n$ ,但一定小于 $n^3$。~~所以事实上b数组保险起见要开n的3次方大小~~
by LJ07 @ 2022-04-16 20:37:59


@[LJ07](/user/312306) 明白了,谢谢!!!
by cker @ 2022-04-16 20:40:33


最low的 最容易理解的: #include<iostream> #include<cstdio> #include<bits/stdc++.h> using namespace std; int arr[1000],brr[1000],n,ans=0,temp; int main(void) { //freopen("test.in","r",stdin); //freopen("test.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&arr[i]); } for(int j=1;j<=n;j++) { for(int i=n-``` #include<iostream> #include<cstdio> #include<bits/stdc++.h> using namespace std; int arr[1000],brr[1000],n,ans=0,temp; int main(void) { //freopen("test.in","r",stdin); //freopen("test.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&arr[i]); } for(int j=1;j<=n;j++) { for(int i=n-1;i>=1;i--) { if(arr[i]>arr[i+1]) { temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } } for(int c=3;c<=n;c++) { for(int a=1;a<c;a++) { for(int b=a+1;b<c;b++) { if(arr[c]==arr[a]+arr[b]) { if(brr[c]==0) { ans++; brr[c]=1; } } } } } printf("%d",ans); return 0; } ``` 1;i>=1;i--) { if(arr[i]>arr[i+1]) { temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } } for(int c=3;c<=n;c++) { for(int a=1;a<c;a++) { for(int b=a+1;b<c;b++) { if(arr[c]==arr[a]+arr[b]) { if(brr[c]==0) { ans++; brr[c]=1; } } } } } printf("%d",ans); return 0; }
by yycyqz @ 2022-05-28 20:09:14


@[cker](/user/646985) 我给你发了
by yycyqz @ 2022-05-28 20:10:06


|