luogu P2267 琪琪的項鍊

2022-06-01 18:54:10 字數 811 閱讀 1494

---恢復內容開始---

神仙題。。。

第一眼還以為是道數學題。。。

看了題解發現是道噁心的dp。。

設 f[i] 表示 以珠子 i 為結尾的方案數(必須選i),然後能對其做出貢獻的只有  x ~ i-1 這段區間。。

x表示 a [ x ] == a [ i ] && a[ x+1 ~  i-1 ] != a [ i ] 也就是最後乙個和 i 顏色相同的位置。。

為什麼??

因為在1~x-1中選出若干個後,再選 x 或 i 的話就重複了。。

所以轉移方程就是

f[i]=(sigma)(j=x,j<=i-1)f[j] (a[x]==a[i] ,a[x+1  ~  i - 1]!=a[i] )

額就是這樣子。。

對於我這種蒟蒻太難了 。。

code

#include#include#include#define ll long long

#define n 500010

using namespace std;

int n,m,last[n],tmp[n];

ll a[n],b[n],sum[n];

inline ll read()

while(c>='0' && c<='9') x=(x<<1)+(x<<3)+c-'0',c=getchar();

return x*flag;

}int main()

for(int i=1;i<=n;i++)

printf("%lld\n",(sum[n]%m+m)%m);return 0;

}

luoguP2267 琪琪的項鍊

題目 題解 這題略吊。看了之後發現不能用組合數學直接得出公式,然後如果直接暴力也不知道如何去排除兩個顏色序列相同的情況。然後去膜拜題解 令f i 表示結尾 i 必選的diy方法的種數。所有珠子顏色不一樣的話 f i f 0 f 1 f i 1 對於顏色不同的話,假設珠子i顏色為c,顏色c在i之前出現...

JZ初中OJ 2267 寶物篩選

時間限制 1000 ms 空間限制 60000 kb 具體限制 題目描述 終於,破解了千年的難題。小 ff 找到了王室的寶物室,裡面堆滿了無數價值連城的寶物 這下小 ff 可發財了,嘎嘎。但是這裡的寶物實在是太多了,小ff 的採集車似乎裝不下那麼多寶物。看來小 ff 只能含淚捨棄其中的一部分寶物了 ...

Luogu P1208 混合牛奶

這個題目直接開個結構體按 排序,然後一直加加加,就可以了。典型的貪心。include include include include include include using namespace std int i,m,n,j,k,ans struct mana 5001 bool cmp man...