求助玄学问题
查看原帖
求助玄学问题
557754
Kalenist楼主2023/10/15 22:34

本地跑三个样例都过了,但是交上去 WAWA 并且显示需要利用矩阵快速幂的测试点都错了,就连本地测试通过的那两个样例都没过。用 ACAC 代码对拍答案都没问题。找一晚上的错了,为什么会出现本地测 ACAC 交上去样例 WAWA 的问题??求助!!

inline int solve1()
{
    For(i,1,n) tr.v[1][1]+=s[i][1]=='#'&&s[i][m]=='#';
    For(i,1,n) For(j,1,m-1) st.v[0][1]+=s[i][j]=='#'&&s[i][j+1]=='#';
    st=mul(st,fpow(tr,k-1));
    return st.v[0][0];
}

inline int solve2()
{
    For(i,1,m) tr.v[1][1]+=s[1][i]=='#'&&s[n][i]=='#';
    For(i,1,n-1) For(j,1,m) st.v[0][1]+=s[i][j]=='#'&&s[i+1][j]=='#';
    st=mul(st,fpow(tr,k-1));
    return st.v[0][0];
}

int main()
{
    scanf("%d%d%lld",&n,&m,&k);
    if(!k) {puts("1");return 0;}
    For(i,1,n) scanf("%s",s[i]+1);
    For(i,1,n) For(j,1,m) cnt+=s[i][j]=='#';
    For(i,1,n) if(s[i][1] == '#' && s[i][m] == '#') {row=1;break;}
    For(i,1,m) if(s[1][i] == '#' && s[n][i] == '#') {col=1;break;}
    if(row && col) {puts("1");return 0;}
    if(!row && !col) {printf("%d\n",fpow(cnt,k-1));return 0;}
    st.v[0][0]=1,tr.v[0][0]=cnt,tr.v[1][0]=mod-1;
    printf("%d\n",row?solve1():solve2());
    return 0;
}
/*
3 3 5
.#.
###
#.#

*/

2023/10/15 22:34
加载中...