竞赛
考级
#include<iostream> using namespace std; const int N=2e5+20; int n,c; int vis[N],vvis[N]; int a[N]; int cnt; int main(){ cout<<cnt; return 0; }
199****2443
为了改bug我还花了一次机会看测试点😭 时间复杂度:O(nlog2n)O(n\log_2n)O(nlog2 n)
复仇者_帅童
#include<bits/stdc++.h> using namespace std; typedef long long LL; LL a[200001]; map<LL,LL> m; //A-B=C --> A-C=B int main() { int n; LL c; LL ans=0; cin >> n >> c; for(int i=1;i<=n;i++) { cin >> a[i]; m[a[i]]; a[i]-=c; } for(int i=1;i<=n;i) ans+=m[a[i]]; cout << ans << endl; return 0; }
人
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[200]; map<ll,ll> mp; int main(){ ll b,c,sum=0; cin>>b>>c; for(int i=0;i<b;i++){ cin>>a[i]; mp[a[i]]; a[i]=a[i]-c; } for(int i=0;i<b;i){ sum=sum+mp[a[i]]; } cout<<sum<<endl; return 0; }
青莲又失利了
用map储存,再遍历时,加上ai−ma_i-mai −m的数量即可 注意,没说先后顺序,不用除2 查询mp[i]mp[i]mp[i]时间复杂度:O(log2a[i])O(\log_2 a[i])O(log2 a[i]) 时间复杂度:O(nlog2a[i])O(n\log_2 a[i])O(nlog2 a[i])
复仇者_纳西妲厨一位
A-B 数对 题意 给出一个数组以及一个正整数C,找A和B,求A - B = C的个数(不同位置的数字一样的数对算不同的数对) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 方法 简单描述 A-B=C 则 A-C=B 所以要枚举一个A,求出B有x个,答案+x 重点-如何找B 可以先sort,再用最后等于B的下标 - 第一个等于B的下标+1就可以啦,这里给一个样例说明 第一个1的下标是0,最后一个为1的下标是2,2-0+1=3个 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 重点 二分函数return的值很重要哦! ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 代码
立方-小R
...
宋c
#include <iostream> #include <algorithm> #include <map> using namespace std; map <int, int> h; const int N = 2e5 + 10; int n, m, x, a[N], ans; int main(){ }
158****0253
#include <iostream> #include <algorithm> using namespace std; int n,a[200010],sum,c; int main() { cin>>n>>c; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1 ,a+n+1); for(int i=1;i<=n;i++) { int b=a[i]-c; int pos2=upper_bound(a+1,a+n+1,b)-a; int pos1=lower_bound(a+1,a+n+1, b)-a; sum+=pos2-pos1; } cout<<sum; return 0; }
137****7090
#include<iostream> #include<algorithm> using namespace std; int a[1000010]; int main(){ int n,m,cnt=0; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+n+1); for(int i=1;i<=n;i++) { int b=a[i]-m; int pos=lower_bound(a+1,a+n+1,b)-a; int pos1=upper_bound(a+1,a+n+1,b)-a; cnt+=pos1-pos; }cout<<cnt; return 0; }
二分大师也! 看一下代码吧 测试点信息一览: 图片 最高仅需32MS 关注我,即可变帅
AC
A(Hello world!)
zsy