初步思路:
預處理出340以內的素數陣列[ 68 ](因為對於大於340的數,如果是合數,必然會被340以內的數整除(若不能,必大於1e5),那麼判斷進行質因數分解,只需逐個去除這個素數陣列即可,最後如果不是1,便是最後乙個素數)
對於求[al,ar)內的完美種類數,將ar-al進行因數分解,得到所有因數(不一定是質因數),然後乙個乙個檢測,如果能夠被am-ai整除,則淘汰,最後剩下的個數就是以al,ar為邊界的完美種類數
設 g[i][j]表示以[i,j)為邊界的方案種類數,f[i][j]表示從i到j所有方案數;終究還是錯了,狀態轉移方程錯誤,沒找到正確的關係;首先,f一定是由組合體和單一體組合而成,而組合體也是如此,那麼對於組成f的任意一種情況,可以看做是在ij之間任意插入若干個節點進行分割,f_ij便是所有情況的和,顯然這樣是比較難求的,那麼就要進行分解,分解成簡單問題,分解動作一般就是以某個東西作為衡量,這種東西的所有情況可以代表了原問題的所有情況==》那麼在這道題中,我們以最後乙個分界線與結尾處組成的單一體的長度為衡量標準,此分界線前面的情況任意,那麼這樣(長度範圍為[1 , j-i-1]+g)的確可以包含所有情況
由於區間不存在大於關係,這裡應該採用長度遞推,而由於i,j不會重複,那麼g的求解便不會重複;長度為1的時候,g的結果可以賦給f,到後來g可以在當前步驟直接求解,而f直接採用遞推即可
正如所料,超時!顯然,畢竟做了那麼多明顯重複的操作,對於每乙個obs[j]-obs[i]
都要計算所有因數,必然超時,那麼,這次我終於明白了什麼叫做數論題目的打表操作,就是對於數論操作中可能會經常重複 使用的值,提前預處理出來,到用的時候直接線性查詢即可,雖然在預處理的時候可能看上去似乎資料量巨大,划不來,實際上經過簡單的數學分析就會發現,這樣會減少很多重複性工作(思政教育:經驗的確重要,但使用經驗之前,還是要經過理性判斷斟酌一下!)
tle**:
//#include#include#define local
using namespace std;
typedef long long ll;
//這裡必須使用長整型,因為即使mod是整型,但只要出現兩個數相乘,就會出現溢位
const ll maxn=1010;
const ll mod=1e9+7;
// int prm[70];int pn;
ll obs[maxn];
ll dp[maxn];
ll read()
while (c>='0' && c<='9')
return f*s;
}// 歐氏篩實現340以內素數陣列
// int mark[340];
// int get_prm()
// }
// return k;
// }
ll get_g(int i,int j)
}if (flag) cont++;
ll tmpk=dft/k;
if (tmpk==k) continue;
flag=1;
for (int m=i+1;m<=j-1;++m)
}if (flag) cont++;
}cont%=mod;
} return cont;}
int main()
while (c>='0' && c<='9')
return f*s;}
int main()
}flag[dft]=1;
// dp[i]=(dp[i]+dp[j]*get_g(j,i)%mod)%mod;
dp[i]=(dp[i]+dp[j]*cont%mod)%mod;
} // dp[i]=(dp[i]+get_g(0,i))%mod;
} printf("%lld",dp[n-1]);
return 0;
}
差分法 學校門前的樹
description 校門外長度為l的馬路上很有多顆樹,每兩棵相鄰的樹之間的間隔是1公尺。我們可以簡化的把馬路看成乙個數軸,馬路的一端在數軸中x 0的位置,另一端在x l的位置 數軸上的每個整數點即0,1,2,3 l,都種有一棵樹。現在光頭強要把其中一些區域中的樹全部砍走。已知任一區域中的起點和終...
CSP202104 4 校門外的樹
原題點我 打眼一看,感覺是個dp,而我的dp很菜 其實不管什麼都很菜 看到區間就想到區間dp,導致有一點思路,但是無法實現。實際上我們不關心中間的某一段的種樹情況,只需要知道從第乙個障礙物開始到最後乙個障礙物結束的種樹方案,因此只需要一維陣列。用 f i 表示從第乙個障礙物到第 i 個障礙物的總方案...
校門外的樹
描述 某校大門外長度為 l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是 1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸 0的位置,另一端在 l的位置 數軸上的每個整數點,即0,1,2 l,都種有一棵樹。馬路上有一些區域要用來建地鐵,這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起...