下面这个代码是 30 分的,50 分的代码是错误的,就不放了。
#include<bits/stdc++.h>
using namespace std;
namespace Fread{
const int SIZE=1<<16;
char buf[SIZE],*S,*T;
inline char getchar(){if(S==T){T=(S=buf)+
fread(buf,1,SIZE,stdin);if(S==T)return'\n';}return *S++;}
}
namespace Fwrite{
const int SIZE=1<<16;
char buf[SIZE],*S=buf,*T=buf+SIZE;
inline void flush(){fwrite(buf,1,S-buf,stdout);S=buf;}
inline void putchar(char c){*S++=c;if(S==T)flush();}
struct NTR{~NTR(){flush();}}ztr;
}
namespace Fastio{
struct Reader{
template<typename T>Reader&operator>>(T&x){
char c=getchar();short f=1;
while(c<'0'||c>'9'){if(c=='-')f*=-1;c=getchar();}
x=0;while(c>='0'&&c<='9'){
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}x*=f;return *this;
}
Reader&operator>>(double&x){
char c=getchar();short f=1,s=0;x=0;double t=0;
while((c<'0'||c>'9')&&c!='.'){if(c=='-')f*=-1;c=getchar();}
while(c>='0'&&c<='9'&&c!='.')x=x*10+(c^48),c=getchar();
if(c=='.')c=getchar();else return x*=f,*this;
while(c>='0'&&c<='9')t=t*10+(c^48),s++,c=getchar();
while(s--)t/=10.0;x=(x+t)*f;return*this;
}
Reader&operator>>(long double&x){
char c=getchar();short f=1,s=0;x=0;long double t=0;
while((c<'0'||c>'9')&&c!='.'){if(c=='-')f*=-1;c=getchar();}
while(c>='0'&&c<='9'&&c!='.')x=x*10+(c^48),c=getchar();
if(c=='.')c=getchar();else return x*=f,*this;
while(c>='0'&&c<='9')t=t*10+(c^48),s++,c=getchar();
while(s--)t/=10.0;x=(x+t)*f;return*this;
}
Reader&operator>>(__float128&x){
char c=getchar();short f=1,s=0;x=0;__float128 t=0;
while((c<'0'||c>'9')&&c!='.'){if(c=='-')f*=-1;c=getchar();}
while(c>='0'&&c<='9'&&c!='.')x=x*10+(c^48),c=getchar();
if(c=='.')c=getchar();else return x*=f,*this;
while(c>='0'&&c<='9')t=t*10+(c^48),s++,c=getchar();
while(s--)t/=10.0;x=(x+t)*f;return*this;
}
Reader&operator>>(char&c){
c=getchar();while(c=='\n'||c==' '||c=='\r')c=getchar();
return *this;
}
Reader&operator>>(char*str){
int len=0;char c=getchar();
while(c=='\n'||c==' '||c=='\r')c=getchar();
while(c!='\n'&&c!=' '&&c!='\r')str[len++]=c,c=getchar();
str[len]='\0';return*this;
}
Reader&operator>>(string&str){
char c=getchar();str.clear();
while(c=='\n'||c==' '||c=='\r')c=getchar();
while(c!='\n'&&c!=' '&&c!='\r')str.push_back(c),c=getchar();
return*this;
}
template<class _Tp>Reader&operator>>(vector<_Tp>&vec){for(unsigned i=0;i<vec.size();i++)cin>>vec[i];return*this;}
template<class _Tp,class _tp>Reader&operator>>(pair<_Tp,_tp>&a){cin>>a.first>>a.second;return*this;}
Reader(){}
}cin;
const char endl='\n';
struct Writer{
const int Setprecision=6;
typedef int mxdouble;
template<typename T>Writer&operator<<(T x){
if(x==0)return putchar('0'),*this;
if(x<0)putchar('-'),x=-x;
static int sta[45];int top=0;
while(x)sta[++top]=x%10,x/=10;
while(top)putchar(sta[top]+'0'),--top;
return*this;
}
Writer&operator<<(double x){
if(x<0)putchar('-'),x=-x;
mxdouble _=x;x-=(double)_;static int sta[45];int top=0;
while(_)sta[++top]=_%10,_/=10;if(!top)putchar('0');
while(top)putchar(sta[top]+'0'),--top;putchar('.');
for(int i=0;i<Setprecision;i++)x*=10;
_=x;while(_)sta[++top]=_%10,_/=10;
for(int i=0;i<Setprecision-top;i++)putchar('0');
while(top)putchar(sta[top]+'0'),--top;
return*this;
}
Writer&operator<<(long double x){
if(x<0)putchar('-'),x=-x;
mxdouble _=x;x-=(long double)_;static int sta[45];int top=0;
while(_)sta[++top]=_%10,_/=10;if(!top)putchar('0');
while(top)putchar(sta[top]+'0'),--top;putchar('.');
for(int i=0;i<Setprecision;i++)x*=10;
_=x;while(_)sta[++top]=_%10,_/=10;
for(int i=0;i<Setprecision-top;i++)putchar('0');
while(top)putchar(sta[top]+'0'),--top;
return*this;
}
Writer&operator<<(__float128 x){
if(x<0)putchar('-'),x=-x;
mxdouble _=x;x-=(__float128)_;static int sta[45];int top=0;
while(_)sta[++top]=_%10,_/=10;if(!top)putchar('0');
while(top)putchar(sta[top]+'0'),--top;putchar('.');
for(int i=0;i<Setprecision;i++)x*=10;
_=x;while(_)sta[++top]=_%10,_/=10;
for(int i=0;i<Setprecision-top;i++)putchar('0');
while(top)putchar(sta[top]+'0'),--top;
return*this;
}
Writer&operator<<(char c){putchar(c);return*this;}
Writer& operator<<(char*str){
int cur=0;while(str[cur])putchar(str[cur++]);
return *this;
}
Writer&operator<<(const char*str){
int cur=0;while(str[cur])putchar(str[cur++]);
return*this;
}
Writer&operator<<(string str){
int st=0,ed=str.size();
while(st<ed)putchar(str[st++]);
return*this;
}
template<class _Tp>Writer&operator<<(vector<_Tp>vec){for(unsigned i=0;i<vec.size()-1;i++)cout<<vec[i]<<" ";cout<<vec[vec.size()-1];return*this;}
template<class _Tp,class _tp>Writer&operator<<(pair<_Tp,_tp>a){cout<<a.first<<" "<<a.second;return*this;}
Writer(){}
}cout;
}
#ifdef ONLINE_JUDGE
#define getchar Fread::getchar
#define putchar Fwrite::putchar
#endif
#define cin Fastio::cin
#define cout Fastio::cout
#define endl Fastio::endl
#define int __int128
int n,ans=-1,sum;
signed main(){
cin>>n;
int a[n+1],b[n+1],c[n+1];
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
if(n&1){
sum=0;
for(int i=1;i<=n/2;i++) c[i]=min(a[i],b[i]);
for(int i=n/2+2;i<=n;i++) c[i]=max(a[i],b[i]);
/*c[n/2+1]=a[n/2+1];
for(int i=1;i<=n;i++) sum+=c[i];
int c_ba=sum,tmp=0;
for(int i=1;i<=n;i++) tmp+=(c[i]*n-c_ba)*(c[i]*n-c_ba);
ans=max(ans,tmp/n);
sum=0;
c[n/2+1]=b[n/2+1];
for(int i=1;i<=n;i++) sum+=c[i];
c_ba=sum,tmp=0;
for(int i=1;i<=n;i++) tmp+=(c[i]*n-c_ba)*(c[i]*n-c_ba);
ans=max(ans,tmp/n);*/
for(int kkk=a[n/2+1];kkk<=b[n/2+1];kkk++){
sum=0;
c[n/2+1]=kkk;
for(int i=1;i<=n;i++) sum+=c[i];
int c_ba=sum,tmp=0;
for(int i=1;i<=n;i++) tmp+=(c[i]*n-c_ba)*(c[i]*n-c_ba);
ans=max(ans,tmp/n);
}
}
else{
sum=0;
for(int i=1;i<=n/2;i++) c[i]=min(a[i],b[i]);
for(int i=n/2+1;i<=n;i++) c[i]=max(a[i],b[i]);
for(int i=1;i<=n;i++) sum+=c[i];
int c_ba=sum,tmp=0;
for(int i=1;i<=n;i++) tmp+=(c[i]*n-c_ba)*(c[i]*n-c_ba);
ans=max(ans,tmp/n);
}
cout<<ans;
}
物理课上课打的代码,如果犯【】错误轻喷。
连个绿题都打不出来,我是什么【】