本来要快速切掉前三题的,结果第二题 double
炸精度,那我用 int
总行了吧:
AC:29
WA:1
代码求条:
#include<bits/stdc++.h>
#define endl '\n'
#define maxn 1000+5
#define int long long
using namespace std;
inline int read(){int x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}return x*f;}
int n;
int a[maxn];
signed main(){
cin >> n;
for(int i=1;i<=n;i++){
cin >> a[i];
}
int l=a[1],r=a[2],gcd=__gcd(l,r);
l/=gcd,r/=gcd;
for(int i=3;i<=n;i++){
int ll=a[i-1],rr=a[i];
if(ll%l!=0 || rr%r!=0){cout << "No";return 0;}
}
cout << "Yes";
return 0;
}
然后我直接看 C 题,简单模拟,我手速不快15min写完,样例都对交了一发:
AC:40
WA:1
代码求条:
#include<bits/stdc++.h>
#define endl '\n'
#define maxn 1000+5
//#define int long long
using namespace std;
inline int read(){int x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}return x*f;}
int w,h;
char a[maxn][maxn];
int main(){
cin >> w >> h;
for(int i=1;i<=h;i++){
cin >> a[i];
}
//l->r
int maxnlr=2147483647;
for(int i=1;i<=h;i++){
for(int j=0;j<w;j++){
if(a[i][j]=='#'){
//cout << '(' << i << ',' << j << ")=" << a[i][j] << endl;
maxnlr=min(maxnlr,j);
}
}
}
//r->l
int maxnrl=-1;
for(int i=1;i<=h;i++){
for(int j=w-1;j>=0;j--){
if(a[i][j]=='#'){
maxnrl=max(maxnrl,j);
}
}
}
//h->l
int maxnhl=2147483647;
for(int i=0;i<w;i++){
for(int j=1;j<=h;j++){
if(a[j][i]=='#'){
maxnhl=min(maxnhl,j);
}
}
}
//l->h
int maxnlh=-1;
for(int i=0;i<w;i++){
for(int j=h;j>=1;j--){
if(a[j][i]=='#'){
maxnlh=max(maxnlh,j);
}
}
}
//cout << maxnhl << ' ' << maxnlh << ' ' << maxnlr << ' ' << maxnrl << endl;
for(int i=maxnhl;i<=maxnlh;i++){
for(int j=maxnlr;j<=maxnrl;j++){
if(a[i][j]=='.'){
cout << "No";
return 0;
}
}
}
cout << "Yes";
return 0;
}
难怪A题150分呢,合着是暗示是吧(