A~D签到题,E稍微用点脑子?F经典分治题(lyd蓝书的袭击)反正分治算就行了复杂度2个log(用个归并能到1个log)
A - hello world
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int main()
{IO;int T=1;//cin>>T;while(T--){cout<<"ifmmp!xpsme\n";}return 0;
}
B - 挂科
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int main()
{IO;int T=1;//cin>>T;while(T--){int n,x,y;cin>>n>>x>>y;cout<<min(x,y)<<' '<<max(x+y-n,0)<<'\n';}return 0;
}
C - a+b
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int main()
{IO;int T=1;//cin>>T;while(T--){int a,b;cin>>a>>b;cout<<hex<<a+b;}return 0;
}
D - 数组的和
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=200010;
ll a[N];
ll s[N];
int n,k;
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>k;ll res=1e18;for(int i=1;i<=n;i++) {cin>>a[i];s[i]=s[i-1]+a[i];}for(int i=1;i<=n;i++){int j=i+k-1;if(j<=n)res=min(res,s[i-1]+s[n]-s[i+k-1]);}cout<<res<<'\n';}return 0;
}
E - 异或
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=200010;
ll a[N];
int p[N];
int main()
{IO;int T=1;//cin>>T;while(T--){int n,q;ll now=0;cin>>n>>q;while(q--){int k,v;cin>>k>>v;if(k<=n) p[k]^=v;int cnt=n/k;if(cnt&1) now^=v;cout<<now<<'\n';}for(int i=1;i<=n;i++)if(p[i])for(int j=i;j<=n;j+=i)a[j]^=p[i];for(int i=1;i<=n;i++)cout<<a[i]<<' ';}return 0;
}
F - 最近的两个点
#include<bits/stdc++.h>using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=100010;
int n;
struct node
{double x,y,z;
}p[N],tmp[N];
bool cmpx(node a,node b)
{return a.x<b.x;
}
bool cmpy(node a,node b)
{return a.y<b.y;
}
double dis(node a,node b)
{double dx=a.x-b.x;double dy=a.y-b.y;double dz=a.z-b.z;return sqrt(dx*dx+dy*dy+dz*dz);
}
double solve(int l,int r)
{if(l==r) return 1e10;int mid=l+r>>1;double flag=p[mid].x;double res=min(solve(l,mid),solve(mid+1,r));//sort(p+l,p+r+1,cmpy);// 归并这一步能够少一个loginplace_merge(p+l,p+mid+1,p+r+1,cmpy); // 归并排序int k=0;for(int i=l;i<=r;i++)if(p[i].x>=flag-res&&p[i].x<=flag+res)tmp[++k]=p[i];// 经证明下面操作复杂度线性?for(int i=1;i<=k;i++)for(int j=i-1;j&&tmp[i].y-tmp[j].y<res&&abs(tmp[i].z-tmp[j].z)<res;j--)res=min(res,dis(tmp[i],tmp[j]));return res;
}
int main()
{cin>>n;for(int i=1;i<=n;i++) cin>>p[i].x>>p[i].y>>p[i].z;sort(p+1,p+1+n,cmpx);printf("%.3lf\n",solve(1,n));return 0;
}