牛客网暑期ACM多校训练营(第八场) 体验记

原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round8.html

榜?

  不存在的

 

故事?

  可怕!两道 oeis 题。

  可怕!时间和百度之星重合了。

  可怕!I 题会做写不动。

  可怕!E 题死命的 wa 却总以为是 $\min(n,m)=1$ 的时候出了锅。

  赛后某 rk2 大佬微微一笑,说:题面出锅了……后来,题面上面加了个 $\min(n,m)>=2$ ,然而我并没有发现。于是就把主要精力放在了 找 $\min(n,m)=1$ 时的锅 上。结果却忽略了自环QAQ 。

  I 反正是 piano 写了180行弃了。

updating……

部分代码

B - oeis 题

#include <bits/stdc++.h>
using namespace std;
const int N=1<<19,mod=998244353;
int n,Fac[N],Inv[N];
int Pow(int x,int y){
    int ans=1;
    for (;y;y>>=1,x=1LL*x*x%mod)
        if (y&1)
            ans=1LL*ans*x%mod;
    return ans;
}
int C(int n,int m){
    if (m<0||m>n)
        return 0;
    return 1LL*Fac[n]*Inv[m]%mod*Inv[n-m]%mod;
}
int main(){
    scanf("%d",&n);
    n--;
    if (n==0){
        printf("1");
        return 0;
    }
    Fac[0]=Inv[0]=1;
    for (int i=1;i<=n;i++){
        Fac[i]=1LL*Fac[i-1]*i%mod;
        Inv[i]=Pow(Fac[i],mod-2);
    }
    int ans=0;
    for (int i=0;i<=n;i++){
        ans=(1LL*Pow(2,i)*C(n,i)%mod*C(n,i-1)%mod+ans)%mod;
    }
    ans=1LL*ans*Pow(n,mod-2)%mod;
    printf("%d",ans);
    return 0;
}
//For n > 0, a(n) = (1/n)*sum(k = 0, n, 2^k*C(n, k)*C(n, k-1))
B

E

#include <bits/stdc++.h>
#define y1 _zzd001
using namespace std;
int T,n,m,k,x1,y1,x2,y2;
int main(){
    scanf("%d",&T);
    while (T--){
        scanf("%d%d%d",&n,&m,&k);
        int f=0;
        while (k--){
            scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
            if (x1==x2&&y1==y2)
                continue;
            if ((x1+y1)%2==0&&(x2+y2)%2==0)
                f=1;
        }
        if (f||n%2==0||m%2==0)
            printf("%d\n",n*m);
        else
            printf("%d\n",n*m+1);
    }
    return 0;
}
View Code

G - oeis 题

#include <bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int n;
int Pow(int x,int y){
    int ans=1;
    for (;y;y>>=1,x=1LL*x*x%mod)
        if (y&1)
            ans=1LL*ans*x%mod;
    return ans;
}
int main(){
    scanf("%d",&n);
    n=(24LL-42LL*n%mod+23LL*n%mod*n%mod-6LL*n%mod*n%mod*n%mod
            +1LL*n*n%mod*n%mod*n%mod)*Pow(24,mod-2)%mod;
    printf("%d",(n+mod)%mod);
    return 0;
}
G

部分题解

H 题解预定

猜你喜欢

转载自www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round8.html