提交记录 4650


用户 题目 状态 得分 用时 内存 语言 代码长度
ywx noi17a. 【NOI2017】整数 Wrong Answer 0 342.024 ms 15836 KB C++ 2.08 KB
提交时间 评测时间
2018-07-27 11:21:08 2020-07-31 23:10:12
#include <cstdio>
#include <cmath>
#include <algorithm> 
using namespace std;
#define ll long long
#define rint register int
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
#define IL inline
const int mo=1e9+7;
const int INF=1e9;
const int N=1e3+10;
int n,jc[N],jc2[N],len[N],a[N],b[N],f[N][N*2],sum[N][N*2],C[N*2][N];
struct re{
  int a,b;
}c[N];
IL bool cmp(re x,re y)
{
  return x.a<y.a;
}
void gcd(int a,int b,int &x,int &y)
{
  if (b==0)
  {
    x=1; y=0; return;
  }
  gcd(b,a%b,y,x);
  y-=x*(a/b);
}
int cnt2;
IL void js(rint &x,rint y)
{
  cnt2++;
  x+=y;
  if (x>=mo) x-=mo;
}
int main()
{
 /* freopen("1.in","r",stdin);
  freopen("1.out","w",stdout);
  srand(time(0)^size_t(new char));
  cin>>n;*/
  n=500;
  jc[0]=1;
  rep(i,1,n)
  {
    int x,y;
    gcd(i,mo,x,y);
    jc[i]=(1ll*jc[i-1]*x)%mo;
    jc2[i]=(1ll*jc2[i-1]*i)%mo;
  }
  rep(i,1,n)
  {
    //cin>>c[i*2-1].a>>c[i*2].a;
    c[i*2-1].a=rand(); c[i*2].a=rand();
    if (c[i*2-1].a>c[i*2].a) swap(c[i*2-1].a,c[i*2].a);
    c[i*2].a++;
    c[i*2-1].b=i*2-1; c[i*2].b=i*2;
  }
  sort(c+1,c+n*2+1,cmp);
  int cnt=0;
  c[0].a=INF;
  rep(i,1,n*2)
  {
    if (c[i].a!=c[i-1].a) cnt++,len[cnt]=c[i].a-c[i-1].a;
    if (c[i].b%2) a[(c[i].b+1)/2]=cnt+1;
    else b[c[i].b/2]=cnt;
  }
  int m=cnt;
  for (int i=1;i<=m;i++)
  {
    int p=1;
    C[i][0]=1;
    for (int j=1;j<=n+1;j++)
      p=(1ll*p*(len[i]+j-1))%mo,C[i][j]=((1ll*p*jc[j])%mo+mo)%mo;  
  }
  f[0][0]=1;
  rep(i,0,m) sum[i][0]=1;
  int ans=0;
  rep(i,1,n)
  {
    rep(j,a[i],b[i])
    {
      rint *ab=C[j];
      rint *ac=sum[j-1];
      rint *ad=f[j];
      rint kk=1;
      dep(k,i-1,0)
      {
        rint now=ac[k];
        rint tmp1=ad[i];
        rint tmp3=ab[kk];
        rint tmp2=(1ll*now*tmp3)%mo;
        if (now) js(tmp1,tmp2);
        ad[i]=tmp1;
    //    if (now) js( ad[i],(1ll*now*ab[kk])%mo);
        if (a[k]<=j&&j<=b[k]) kk++;
      }
      sum[j][i]=sum[j-1][i]+f[j][i];
      if (sum[j][i]>=mo) sum[j][i]-=mo;
      js(ans,f[j][i]);
    }
    rint o=sum[b[i]][i];
    rep(j,b[i]+1,m) sum[j][i]=o;
  }
  printf("%d",(ans+mo)%mo);
  return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #1341.12 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #2341.601 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #3342.024 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #4341.063 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #5341.182 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #6341.179 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #7341.133 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #8341.613 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #9341.075 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #10341.444 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #11341.103 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #12341.785 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #13341.008 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #14341.1 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #15341.045 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #16341.745 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #17341.945 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #18341.572 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #19341.491 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #20341.555 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #21341.142 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #22341.5 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #23341.079 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #24341.174 ms15 MB + 476 KBWrong AnswerScore: 0

Testcase #25341.117 ms15 MB + 476 KBWrong AnswerScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-04-13 04:45:53 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠