求助,只有2个ac...

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

不需要这么算啊·-·
by wxj1860 @ 2022-02-10 15:56:47


太麻烦了吧
by wxj1860 @ 2022-02-10 15:57:09


输入之后,直接sort排一下,从第三个数a[3]开始暴力枚举。 枚举用一个for循环,i从1开始,到x/2-1结束。如果i和a[k](k>3)-i都在集合中,那ans++,做下一个 最后输出就好了
by wxj1860 @ 2022-02-10 16:01:30


```cpp #include <bits/stdc++.h> using namespace std; int a[101],b[10001]; bool check(int x){ for(int i=1; i<=x/2; i++) if(b[i]==1&&b[x-i]==1&&i!=x-i)return true; return false; } int main(){ int n,ans=0; cin>>n; for(int i=1; i<=n; i++){ cin>>a[i]; b[a[i]]=1; } sort(a+1,a+n+1); for(int i=3; i<=n; i++)if(check(a[i]))ans++; cout<<ans; return 0; } ``` 具体就这样,不过太暴力了
by wxj1860 @ 2022-02-10 16:03:21


@[wxj1860](/user/671859) 对欸 我没想到可以继续把枚举范围缩小到它的一半-1...而且判断方式确实麻烦了,这个架构刚开始是我看错题目以为同一个数的不同构成组合也算,后面没有整体动刀才臃肿了...谢谢!我这就改改... 不过c里没有sort可以用的,我才用的数组直接存起来...
by sduoooh @ 2022-02-10 18:53:32


|