这场比赛演的逼真,感谢队友不杀之恩
总结:卡题了赶紧换,手上捏着的题尽快上机解决
1113~1122
1113:六学家
题意:找出满足ai+aj=ak,i<k<j的个数
题解:用map将每个数映射一下n方暴力扫即可
代码:
#include<bits/stdc++.h> #define fuck(x) cout<<#x<<" = "<<x<<endl; #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 #define ls rt<<1 #define rs rt<<1|1 typedef long long ll; typedef long long LL; const int maxn = 100086; const int inf = 0x3f3f3f3f; const int mod = 1e9 + 7; using namespace std; map<int, bool>mp[2008]; set<int>st; int a[maxn]; int main() { int n; scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%d", &a[i]); } for(int i = n; i >= 1; i--) { mp[i] = mp[i + 1]; mp[i][a[i]] = true; } int ans = 0; for(int k = 1; k <= n; k++) { for(int l = k - 1; l >= 1; l--) { if(mp[k + 1][a[k] - a[l]]) { ans++; break; } } } printf("%d\n", ans); return 0; }