51nod算法马拉松28-c

Posted 宣毅鸣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod算法马拉松28-c相关的知识,希望对你有一定的参考价值。

题解:

按照每一个要求,分类讨论,讨论压下去了多少

代码:

#include<bits/stdc++.h>
using namespace std;
const int MOD=1e9+7,N=20000005;
int n,A,B,C,ans,x,a,b,M,u[N],v[N],p,k;
int main()
{
    scanf("%d%d%d%d%d%d%d%d",&n,&A,&B,&C,&x,&a,&b,&M);
    int l=N/2,r=N/2-1;
    for (int i=1;i<=n;i++)
     {
         x=((long long)a*x+b)%M;
         int X,Y=x; 
         if (k<=1||x%(A+B+C)<A)X=0;
         else if (x%(A+B+C)<A+B)X=1;
         else X=2;
         if (X==2)
          {
              k--;p--;
              while (v[r]+p==0)r--;
              (ans+=u[r])%=MOD;
          }
         if (X==0)
         {
             k++;p++;
              if (u[r]<Y)u[++r]=Y,v[r]=-p+1;
              (ans+=u[r])%=MOD;              
         } 
        if (X==1)
         {
             k++;
             while (l<=r&&u[l]<Y)l++;
             u[--l]=Y;v[l]=k-p;
              (ans+=u[r])%=MOD;               
         } 
     }
    printf("%d",ans); 
}

 

以上是关于51nod算法马拉松28-c的主要内容,如果未能解决你的问题,请参考以下文章

51Nod 算法马拉松12 Rikka with sequences

51nod算法马拉松15

随便玩玩系列之一:SPOJ-RNG+51nod 算法马拉松17F+51nod 1034 骨牌覆盖v3

51nod算法马拉松14

51nod 算法马拉松35(A-D)

51nod 算法马拉松17 解题报告