请问大佬们,为什么不开O2会wa?
  • 板块P1350 车的放置
  • 楼主Butane
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/9/15 22:35
  • 上次更新2023/11/4 06:40:42
查看原帖
请问大佬们,为什么不开O2会wa?
403799
Butane楼主2021/9/15 22:35

请问好心又帅气的大佬们,为什么不开O2会wa? 以前遇到不开O2过不了的题,往往是因为tle或者mle,为什么这道题是不开O2时第七个点答案错误呢? 代码如下:

#include <stdio.h>
#include <vector>
#include <stdlib.h>
#include <cmath>
#include <algorithm>
#include <map>
#include <time.h>
#include <queue>
#include <iostream>
#include <cstring>
#include <set>
using namespace std;

const int maxv=2010;
const int mod=1e5+3;
const int maxNum=0x7fffffff-10;
const double eps=1e-7;
const double PI=3.1415926535;
typedef long long LL;

inline LL read(){
     LL x=0;
     char ch=getchar();
     while(ch<'0'||ch>'9'){
         ch=getchar();
     }
     while(ch>='0'&&ch<='9'){
         x=(x<<1)+(x<<3)+(ch^48);
         ch=getchar();
     }
     return x;
}
inline void write(int x)
 {
     if(!x) putchar('0');
     char F[200];
     LL tmp=x>0?x:-x ;
     if(x<0)putchar('-') ;
     int cnt=0 ;
        while(tmp>0)
        {
            F[cnt++]=tmp%10+'0';
            tmp/=10;
        }
        while(cnt>0)putchar(F[--cnt]) ;
    putchar('\n');
}
LL sumA[maxv],sumAC[maxv];
LL C[maxv][maxv];
int main()
{
    LL a,b,c,d,k,ans=0;
    scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&k),sumA[a]=a,sumAC[a+c-k+1]=a+c-k+1;
    for(int i=a-1;i>=1;i--) sumA[i]=sumA[i+1]*i%mod;
    for(int i=a+c-k+1+1;i<=a+c;i++) sumAC[i]=sumAC[i-1]*i%mod;
    C[1][1]=1;
    for(int i=0;i<=2000;i++) C[i][0]=1;
    for(int i=2;i<=2000;i++)
        for(int j=1;j<=2000;j++)
            C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;
    if(k<=d) ans=(ans+C[d][k]*sumAC[a+c])%mod;
    if(k<=b) ans=(ans+C[b][k]*sumA[a-k+1])%mod;
    for(int i=max((LL)1,k-d);i<=min(k-1,b);i++)
        ans=(ans+C[b][i]*C[d][k-i]%mod*sumA[a-i+1]%mod*sumAC[a+c-i])%mod;
    printf("%lld",ans);
    return 0;
}
2021/9/15 22:35
加载中...