最長不下降子串行

2021-07-25 14:26:43 字數 843 閱讀 4168

a1=t0

an=(a*an-1^2+b*an+c)%d(n>1)

求該序列最長不下降子串行長度

n不是很大顯然可以暴力。

n很大呢?

那就不斷減迴圈節長度直至減到乙個閾值內,再暴力。

正確性顯然,只要閾值不要設太小。

#include

#include

#include

#define fo(i,a,b) for(i=a;i<=b;i++)

using namespace std;

typedef long long ll;

const int maxn=150+10,lim=1000000;

int a[1000000+500],b[maxn],d[1000000+500];

int wz[maxn];

int i,j,k,l,t,m,top,a,b,c,ans;

ll n,ti;

int main()

a[++top]=t;

wz[t]=top;

}k=top-l+1;

if (n>lim)

if (n<=lim)

/*k=top-l+1;

fo(i,l,top)

fo(j,1,m)

a[i+k*j]=a[i];

top=top+m

*k; top=int(min((ll)top,n));*/

fo(i,1,top) d[i]=200;

fo(i,1,top)

}printf("%lld\n",(ll)ans+ti);

}

最長不下降子串行

最長不下降子串行解法 第一種就是普通的dp方法 for int i 1 i n i dp 0 1 for int i 1 i n i ans max ans,dp i cout 主要記錄一下n logn的寫法 二分 主要思路 用乙個陣列 b 來記錄最長的子串行 一開始讓b 1 a 1 陣列a為輸入的...

最長不下降子串行

例子 openjudge 4977 怪盜基德的滑翔翼 描述怪盜基德是乙個充滿傳奇色彩的怪盜,專門以珠寶為目標的超級盜竊犯。而他最為突出的地方,就是他每次都能逃脫中村警部的重重圍堵,而這也很大程度上是多虧了他隨身攜帶的便於操作的滑翔翼。有一天,怪盜基德像往常一樣偷走了一顆珍貴的鑽石,不料卻被柯南小朋友...

最長不下降子串行

分析 在考場上的思路是對的 d的範圍很小,所以總有迴圈的一天,這樣我們處理出迴圈節,需要注意的是,迴圈節不一定從1開始 比如說 1 4 2 5 3 2 5 3 迴圈節從第3位開始 我在考場上把序列縮到 不迴圈部分 乙個迴圈節 長度設為n 在序列上做最長不下降子串行,至於之後的迴圈節,他們對答案都可以...