模擬賽4 數字序列 50分做法 狀壓DP

2021-07-10 13:40:03 字數 782 閱讀 9971

題意:求由1到k之間的數字組成的,滿足如果ai=aj,則i-j>=ai的序列個數

一臉懵逼在比賽中想不出ac方法,50分做法:考慮狀壓,因為新的一位能放哪些數字只和最後m-1位有關,又因為k<=7,於是考慮狀壓.

在50分資料也就是k=5時剛好能跑出來

時間複雜度o(n*k^k),大資料直接**= =畢竟太弱

#include#include#include#include#include#include#define ll long long

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

using namespace std;

inline ll read()

while(s>='0'&&s<='9')

return d*f;

}#define n 10005

#define m 8

#define inf 910109

int f[2][10000];

struct s

s[1000];

int n,m,num=0,ma=0;

int po8[10];

int c[9];

void dfs(int k)

// coutfor(int i=k-1,j=2;j<=m;i--,j++) }

}void prework()

int main()

fo(j,1,num)

}int ans=0;

fo(i,1,3000)

cout<

Number Sequence 數字序列

一 杭電原題摘錄 二.題目分析 很容易就能想到遞迴,但是超出記憶體 int fac int a,int b,int n 超出記憶體 因為f n 的值要對7取餘,所以不難想到f n 的值可能存在週期.那我們就去找週期,看是否存在?週期不就是一直重複t個數,那麼我們就說這組數存在週期,且為t.在這個問題...

解碼數字序列

問題 大意 指定26個字元的編碼方式,即a對應1,b對應2,以此類推,z對應26,現出一串數字序列,問有多少種方式能對其進行解碼 實際上是乙個簡單的動態規劃,設s是我們要解碼的數字序列,令dp i 表示s i,s.length 有多少種解碼方式,則狀態方程為 if s i 0,dp i 0 else...

程式設計題 數字序列

信服君最近在研究一種有趣的數字串,例如11135917171513 你可能發現了,除了開始的三個數字為1以外,後面的數字均由三位數字相加得到,現在信服君想知道在給定任意起始三個數字後,第n位是多少。輸入描述 首行輸入乙個整數t 1 t 1000 表示有t組資料,每組資料給出四個數字a b c n其中...