目录
A 码队GO
dp求解
#include <bits/stdc++.h>
using namespace std;
const int N=305;
int dp[N][N], n, m,maxlen;
char p[N][N];
int main() {
int T;
scanf("%d",&T);
while(T--){
memset(dp,0,sizeof(dp));
maxlen=0;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%s",p[i]);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(p[i-1][j-1]=='.'){
dp[i][j]=1+min(dp[i-1][j-1],min(dp[i-1][j],dp[i][j-1]));
maxlen=max(maxlen,dp[i][j]);
}
}
}
// printf("%d\n",maxlen);
printf("%d\n",maxlen*maxlen);
}
return 0;
}
B 码队弟弟的求和问题
C 异世界幻想
膜拜一波大佬的oeis操作
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
ll quick_mult(ll a,ll b){
ll res=1;
while(b){
if(b&1)
res=(res*a)%mod;
b>>=1;
a=a*a%mod;
}
return res%mod;
}
int main(){
int n;
scanf("%d",&n);
if(n==1){
printf("0\n");
return 0;
}
if(n==2){
printf("2\n");
return 0;
}
ll ans=n*quick_mult(n-1,n-2)%mod;
printf("%lld\n",ans);
return 0;
}